2011-07-27 2 views
5

수십억 개의 문자열 중에서 일반적인 부분 문자열 검색을 수행하고 싶습니다. 요구 사항은 "ubst"쿼리가 "substr"을 칠 수 있기 때문에 일반적인 전체 텍스트 검색과 약간 다릅니다.하위 문자열 검색에 대한 색인을 만드시겠습니까?

Lucene 또는 Sphinx가이 기능을 사용할 수 있습니까? 그렇지 않다면 가장 좋은 방법은 무엇이라고 생각하십니까?

답변

0

Lucene이 가장 유용한 옵션 중 하나입니다. Lucene은 하위 문자열 검색을 지원하므로 subst는 substr을 반환합니다.

적합한 언어 구현을 위해서는 http://wiki.apache.org/lucene-java/LuceneImplementations을 확인하십시오.

+0

감사 :

WARNING: min_infix_len is not supported yet with dict=keywords; using dict=crc 

내 최소한의 구성 파일 : 나는 2.0.6 릴리스 버전을 사용하려고 할 때

, 그것은 다음과 같은 색인 동안 경고를주고, 비효율적 인 CRC 인덱스로 다시 떨어졌다 Lucene은 그것에 관한 색인을 가지고 있지 않은 것 같습니다. –

3

이 경우에 가장 적합한 색인 구조는 suffix tree 입니다. Lucene은이 유형의 색인을 구현하지 않으므로 하위 문자열 검색 속도가 느립니다. 그러나 lucene은 프리픽스 트리 색인을 가지고 있습니다. 즉, 접두어로 검색어를 검색하면 빠른 검색을 수행 할 수 있습니다.

+0

감사합니다. 나는 서 픽스 배열을 직접 만들었다. –

0

Sphinx은 2011 년 2 월 2 일자 버전 2.0.1-beta 이후 효과적인 하위 문자열 검색을 지원합니다. 불행히도 오늘은 here과 같이 베타 버전 만 지원합니다.

2.1.1 베타 버전으로 시도했습니다. 올바르게 작동하는 것 같습니다. 사전 유형의 경우 manual entry을 참조하십시오. keywords 유형을 참조하십시오. ,

source sour 
{ 
    type = xmlpipe2 
    xmlpipe_command = type C:\Temp\1\sphinx\input.xml 
} 

index inde 
{ 
    source = sour 
    path = testpa 
    enable_star = 1 
    dict = keywords 
    charset_type = utf-8 
    min_infix_len = 1 
} 
관련 문제