2011-10-08 3 views
7

Solr을 사용하여 부분 단어를 검색하려고하는데 작동하지 않습니다.Solr을 사용하여 부분 단어 검색

schema.xml 파일에 사용하고 있습니다.

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer type="index"> 
     <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="1" splitOnNumerics="1" splitOnCaseChange="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/> 
    </analyzer> 
</fieldType> 

작동하지 않습니다 die h을 검색하지만, 일부 결과는 die hard 반환합니다. 위의 구성을 추가 한 후에 데이터베이스를 다시 인덱싱했습니다.

Heredie hard을 검색 할 때 url이고 출력됩니다. 디버거가 켜져 있습니다.

Heredie h을 검색 할 때 url이고 출력됩니다. 디버거가 켜져 있습니다.

저는 Solr 3.3을 사용하고 있습니다. Hereschema.xml 파일의 나머지 부분입니다.

+0

이 문제가 해결되었습니다. 다음 주소로 가십시오 : http://sackoverflow.com/questions/4824954/solr-partial-and-full-string-match/8247013#8247013 – wormhit

답변

6

공유 한 검색어는 "title_text"필드를 검색하지만 위에 게시 한 스키마는 "텍스트"필드를 정의합니다. 이것은 단지 감시 일 뿐이며 title_text 필드는 게시물에 정의 된 것처럼 가정합니다. NGramTokenizer가 minGramSize = "3"으로 구성되어 있고 단일 문자 토큰을 사용하여 일치 할 것으로 예상됩니다.

minGramSize를 1로 변경해 볼 수도 있지만 필연적으로 매우 비효율적 인 색인이됩니다. 제목에 e가있는 모든 영화와 "e"가 일치하는지 정말 궁금합니까?

+0

'NGramTokenizerFactory'를 모든 인덱스에 대해 정의 할 수 있습니까? 텍스트'? 나는 '댄시 (Danci)'라는 영화를 통해 '댄싱 마스터스 (The Dancing Masters)'라는 영화를 찾고자 노력했다. 그러나 'Danc'을 검색하는 데는 효과가 없었습니다. 그 이유는 무엇입니까? 'NGramTokenizerFactory' 제한을 3으로 설정하면 안됩니까? – Oleander

+0

분석 (토큰 화 프로그램 등)은 Solr에서 필드별로 정의됩니다. 한 번에 모든 필드의 모든 텍스트를 인덱싱하려면 자동으로이를 수행하는 copyField를 정의 할 수 있습니다. "Danci"와의 일치는 NGram이 아닌 토큰 화 때문인 것으로 의심됩니다. 분석 결과를 볼 수있는 관리 도구에서 주위를 어지럽히는 경우, 알 수 있어야합니다. –

+0

copyField 사용은 훌륭했습니다. [Here] (https://gist.github.com/1272526)가 그 결과입니다. 혹시라도 내 schema.xml 파일에 포함시킬 수있는 다른 신의 필터를 알고 있습니까? – Oleander

관련 문제