iPhone/iPad 앱을 사용하면 레코드에 포함 된 하위 문자열에 대해 약 10,000 개의 레코드 (각 단락의 텍스트 정보)를 신속하게 검색 할 수 있습니다. 따라서 레코드에 "Flame"이라는 단어가 포함되어 있으면 "lame"에 대한 쿼리가 일치해야합니다.iOS에서 전체 텍스트 하위 문자열 검색
현재 SQLite를 사용하고 있지만 "%% LIKE % 검색"은이 많은 레코드에 비해 너무 느립니다. SQLite는 접두사 와일드 카드 만 지원하므로 (예 : "* lame"이 아닌 "Flam *") 전체 텍스트 검색을 사용 설정하면 내 필요를 완전히 충족시키지 못하는 것 같습니다.
거대한 크기의 텍스트 (~ 350K)를 사용하고 Boyer-Moore 알고리즘을 사용한다고 [NSString rangeOfString : ...]하고 실험했습니다. 이것은 "LIKE % term %"검색보다 빠르지 만, 내가 바라는 종류의 속도는 아닙니다.
이러한 종류의 확장 가능한 하위 문자열 검색을 달성하고 iPhone에서 작동 할 수있는 방법이나 라이브러리에 대한 제안 사항이 있으십니까?
필자는 비슷한 데이터 세트/쿼리 문제가있어서 UI를 사용하고 스레딩 기술을 사용하여 반응이 느껴지도록해야한다는 것을 알았습니다. 나는 작업자 스레드에서 모든 검색을 수행했는데 사용자가 입력 한대로 검색을 취소/다시 실행합니다. 나는 마법의 탄환을 발견하지 못했다. – NWCoder
감사합니다 NWCoder. 나는 일종의 비동기 접근법을 고려해 봤다. 그건 그렇고, 당신은 검색을 위해 어떤 접근 방식을 사용 했습니까? LIKE 검색어? –
예 LIKE로 올바른 결과 만 얻을 수있었습니다. 한 가지 덧붙여서, 검색 가능한 텍스트와 ID를 사용하여 개체의 확장 된 특성을 참조하는 간단한 개체를 만들었습니다. 검색 특정 버전에서 텍스트 (모든 소문자없는 구두점 등)를 정규화하고 약간은 도움이되었지만 많이는 아니 었습니다. (아마도 5 ~ 10 %의 속도 증가가 있습니다.) – NWCoder