2012-02-10 1 views
2

여기 내 검색 쿼리 작업의하지에 "Hello World"SOLR는

필드가 하나 개의 문서에 대한 색인에이 단어를 가지고 이 문서를 발견되지

<fieldtype class="solr.TextField" name="text_partial_all" positionIncrementGap="100" omitNorms="false" stored="false"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.PatternReplaceFilterFactory" pattern="[^\d\sa-zA-Z]" replacement=""/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="30"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.PatternReplaceFilterFactory" pattern="[^\d\sa-zA-Z]" replacement=""/> 
    <filter class="solr.LengthFilterFactory" min="2" max="30" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    </analyzer> 
</fieldtype> 

: 안녕하세요 세계

다음은이 유형에 대한 내 스키마 정의입니다. 어떤 단서?

+0

'name_text_partial_all : "hello world"와 (과) 같이하거나'text_partial_all : "hello world"와 (과) 같은 검색어를 사용하고 있습니까? – javanna

답변

1

<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="30"/>은 별도의 위치에있는 ngram 토큰을 생성합니다.
예 : Hello World 그것이 NGramFilterFactory를 통과 할 때 Hello와 World 토큰은 분리 된 위치에있게됩니다.
Hello World의 토큰 Hello가 위치 10에 있고 월드가 위치 20에 있습니다.
정확한 구문 name_text_partial_all:"hello world"을 찾는 쿼리는 작동하지 않으므로 name_text_partial_all:"hello world"~9이 작동합니다.
동일한 위치를 유지하려면 기울기 또는 위치 필터를 사용해야합니다.