GithubHelp home page GithubHelp logo

hangulsearch's Introduction

HangulSearch

stability-beta

KoreanSearch는 다양한 방식의 한글 검색을 지원하는 스위프트 라이브러리입니다.
다양한 검색 모드를 활용하여 한글 텍스트 데이터에 대한 유연한 검색 기능을 구현할 수 있습니다.

기능

검색

  • 초성 검색: 사용자가 입력한 초성에 맞는 데이터를 검색합니다.
  • 자동 완성: 사용자의 입력에 기반한 자동 완성 결과를 제공합니다.
  • 전체 문자열 검색: 입력된 전체 문자열을 포함하는 데이터를 검색합니다.
  • 종합 검색 모드: 초성 검색과 자동 완성을 결합하여 더 넓은 범위의 검색을 지원합니다.

정렬

  • 기본: 정렬을 수행하지 않음. 데이터 순서대로 반환
  • 자모 순서: 항목들을 한글 자모 순서대로 정렬
  • 자모 역순: 항목들을 한글 자모 역순으로 정렬
  • 편집 거리: Levenshtein (편집) distance 기준으로 가장 유사한 순서대로 정렬

설치 방법

  1. Xcode를 열고, 상단 메뉴에서 File > Swift Packages > Add Package Dependency... 를 선택합니다.
  2. 검색창에 HangulSearch의 URL을 붙여넣습니다: https://github.com/Juhwa-Lee1023/HangulSearch
  3. main 브랜치를 선택하여 설치합니다.
  4. Next를 클릭한 후, Finish를 클릭하여 설치를 완료합니다.

사용 방법

HangulSearch 라이브러리를 사용하기 위해선, 우선 HangulSearch 인스턴스를 생성해야 합니다.
여기에는 검색할 데이터 배열과 검색 모드, 그리고 검색할 데이터의 속성를 추출하는 keySelector 클로저를 선언합니다.

인스턴스 생성 예제

문자열 배열을 요소로 하는 HangulSearch 인스턴스를 생성

var searchEngine: HangulSearch<String>?
searchEngine = HangulSearch(items: ["사과", "바나나", "포도"], mode: .containsMatch, keySelector: { $0 })

Person 객체 배열을 요소로 하는 HangulSearch 인스턴스 생성

var searchEngine: HangulSearch<Person>?
let personSearch = HangulSearch(items: persons, mode: .autocomplete, keySelector: { $0.name })

검색 모드별 사용 방법

1. 초성 검색 (chosungAndFullMatch)

초성 검색 모드에서는 사용자가 입력한 초성에 해당하는 항목을 찾습니다. 예를 들어, "ㅊㅅ"을 검색하면 "ㅊㅅ" 초성을 가진 모든 결과를 찾을 수 있습니다.

    let searchEngine = HangulSearch(items: persons, mode: .chosungAndFullMatch, keySelector: { $0.name })
    let results = searchEngine?.searchItems(input: "ㅊㅅ")
    // results?.map { $0.name } = ["김철수", "이철수", "박철수", "최철수", "최성수", "최상욱", "정철수", "강철수", "초철수", "초성수", "초상욱", "윤철수", "장철수", "임철수"]
클릭하여 동영상 보기
RPReplay_Final1713712676.MP4

2. 전체 문자열 검색 (containsMatch)

전체 문자열 검색에서는 입력된 전체 문자열을 포함하는 항목을 반환합니다. 예를 들어, "철수"라는 문자열을 검색하면 이름 중 "철수"를 포함하는 모든 결과를 반환합니다.

    let searchEngine = HangulSearch(items: persons, mode: .containsMatch, keySelector: { $0.name })
    let results = searchEngine?.searchItems(input: "철수")
    // results?.map { $0.name } = ["김철수", "이철수", "박철수", "최철수", "정철수", "강철수", "초철수", "윤철수", "장철수", "임철수"]
클릭하여 동영상 보기
RPReplay_Final1713712725.MP4

3. 자동 완성 검색 (autocomplete)

자동 완성 검색에서는 사용자가 입력한 문자열로 시작하는 항목을 찾습니다. 예를 들어, "쵳"으로 검색하면 "최철수"와 같은 결과를 얻을 수 있습니다.

    let searchEngine = HangulSearch(items: persons, mode: .autocomplete, keySelector: { $0.name })
    let results = searchEngine?.searchItems(input: "")
    // results?.map { $0.name } = ["최철수"]
클릭하여 동영상 보기
RPReplay_Final1713712800.MP4

4. 종합 검색 모드 (combined)

종합 검색 모드에서는 초성 검색, 전체 문자열 검색, 자동 완성 검색을 조합하여 더 넓은 범위의 검색 결과를 제공합니다. 이 모드는 다양한 입력 형태에 대해 가장 광범위한 검색 결과를 반환합니다.

클릭하여 동영상 보기
RPReplay_Final1713712837.MP4

사용된 데이터


추가적으로 라이브러리의 기능을 이해하고 활용하기 위한 테스트 코드 예제를 참조하고 싶다면, 테스트 코드 를 참고해주세요.


기여하기

이 프로젝트에 기여하고 싶으시다면, Pull Request를 보내주시거나, Issues를 등록해 주세요. 모든 종류의 기여를 환영합니다!


라이선스

이 프로젝트는 MIT 라이선스 하에 제공됩니다. 자세한 내용은 LICENSE 파일을 참조해주세요.

hangulsearch's People

Contributors

juhwa-lee1023 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

hangulsearch's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.