2013-06-14 2 views
0

나는 solr에서 아래의 스키마를 가지고 있으며 텍스트 일치를하고 있습니다. 아래는 Fields와 copyfield입니다.SOLR loose match with spaces

<!-- A text type with min processing --> 
    <fieldType name="text_min" class="solr.TextField" omitNorms="false"> 
     <analyzer> 
     <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="25" /> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
    </fieldType> 

    <!-- 
    NGram processing for substrings 
    --> 
    <fieldType name="text_ngram" class="solr.TextField" omitNorms="false"> 
     <analyzer> 
     <tokenizer class="solr.LowerCaseTokenizerFactory" /> 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" side="front" /> 
     </analyzer> 
    </fieldType> 



<field name="namedescription" type="text_min" indexed="true" stored="true" /> 
<field name="namedescription_ngram" type="text_ngram" indexed="true" stored="false" /> 

<field name="namedescr" type="text" indexed="true" stored="false" multiValued="true"/> 

<copyField source="namedescription" dest="namedescr"/> 
<copyField source="namedescription_ngram" dest="namedescr"/> 

내 입력 : 로렘 입숨 물건 검색 : 로렘 입숨 물건 (일치) 로렘 입숨 (경기) LOREM 또는 Ipsum 제품 또는 STUF (경기) * ===> LOREM 녹화 프레임 (나던 경기 .) 또는 ipsum stu (doesnt match.)

분석기로 추가해야하는 것은 namedescription 필드와 일치하는 것을 보여줍니다. 나는 아무것도 놓쳤다.

답변

0

먼저 - namedescriptionnamedescription_ngramnamedescr 필드에 복사합니다.

두 번째 - namedescr을 (를) 쿼리하고 있습니다. copyField은 다음을 수행합니다. "원본 텍스트는 원본 또는 대상 필드에 대해 구성된 분석기가 호출되기 전에"원본 "필드에서"대상 "필드로 전송됩니다." 이 필드 namedescriptionnamedescription_ngramLorem Ipsipsum stu를 조회 할 경우 this site

에 따르면,하지만 namedescr에서 작동합니다.

namedescrN-Grams을 생성하지 않으므로 결과가 없습니다.

+0

다른 필드를 사용해야하고이를 적절하게 늘려야합니까? – Greens

+0

또한 내 text_min에는 ngram 공장이 있습니다. – Greens

+0

먼저 namedescription 및 namedescription_ngram에서 쿼리를 시도하십시오. 그런 다음 Lorem Ips가 문서를 올지 여부를 확인하십시오. – JHS