2014-06-05 2 views
1

Solr의 제안 구성 요소를 사용하는 데 문제가 있습니다. 사용하려는 구현 클래스는 AnalyzingInfixLookupFactory입니다.이 접미사뿐만 아니라 접두사를 기반으로 제안 사항을 얻으 려합니다. 또한 Solr은 검색 용어를 하나의 토큰으로보아야했습니다. 그러나 문제는 Solr이 항상 접미어가 아닌 접두사를 기반으로 제안을 반환한다는 것입니다.Solr Suggester Impl 클래스 용 AnalyzingInfixLookupFactory

<searchComponent name="suggest" class="solr.SuggestComponent"> 
<lst name="suggester"> 
    <str name="name">mySuggester</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str>  <!-- org.apache.solr.spelling.suggest.fst --> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str>  <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory --> 
    <str name="field">movie_name</str> 
    <str name="weightField">movie_meter</str> 
    <str name="buildOnCommit">true</str> 
    <str name="suggestAnalyzerFieldType">text_general</str> 
</lst> 

의 schema.xml에서 text_general :

는 solrconfig.xml에서 구성 요소를 제안의 나입니다 여기

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

답변

3

나는이 얼마 전에 긴 질문을 받았다 알고 있지만, 내 어쨌든 대답 해.

위 solrconfig.xml에 다음 분석기 필드 유형을 사용

<str name="suggestAnalyzerFieldType">text</str> 
<str name="queryAnalyzerFieldType">text_suggest</str> 

를 다음의 schema.xml에서 :

<fieldtype name="text" class="solr.TextField"> 
    <analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldtype> 

<fieldtype name="text_suggest" class="solr.TextField"> 
     <analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.TrimFilterFactory"/> 
     </analyzer> 
    </fieldtype> 
+0

관리 스키마! – Ahmed

+0

안녕하세요 제임스, 왜 우리는 텍스트와 text_suggest를 solrconfig.xml에 추가해야합니까? 솔라리스를 추가하지 않고 예제를 시도해 보았습니다. 나는 무엇인가 놓치고 있니? –

+0

안녕하세요 Nerandra, suggestAnalyzerFieldType은 StandardTokenizerFactory를 사용하므로 텍스트를 필드의 용어 중 하나를 사용하여 입력 할 수 있습니다. queryAnalyzerFieldType은 KeywordTokenizerFactory를 사용하여 전체 필드가 ​​문자열로 반환됩니다. 저자, 제목 등과 같은 짧은 제안 필드에서 유용합니다 (예 : amadeus에서 타이핑을 시작하면 wolfgang amadeus mozart가 반환됩니다) –

0

을 SOLR 버전 6.6의 경우.
조금 늦었지만 다른 사람들에게 유용 할 것입니다. "product_name"필드에 대한 검색을 구성하고 싶습니다.
solrconfig.xml

<searchComponent name="suggest" class="solr.SuggestComponent"> 
     <lst name="suggester"> 
     <str name="name">productSuggester</str> 
     <!--<str name="lookupImpl">FuzzyLookupFactory</str> --> 
     <str name="lookupImpl">AnalyzingInfixLookupFactory</str> --> 
     <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
     <str name="field">product_name</str> 
     <!-- <str name="weightField">price</str> --> 
     <str name="buildOnCommit">true</str> 
     <str name="suggestAnalyzerFieldType">text_suggest</str> 
     <str name="buildOnStartup">true</str> 
     <str name="highlight">false</str> 
     </lst> 
    </searchComponent> 

이 너무 감사합니다 많은 도움이

<fieldtype name="text_suggest" class="solr.TextField"> 
     <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/>   
     <filter class="solr.LowerCaseFilterFactory" /> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
    </analyzer> 
</fieldtype> 

<field name="product_name" type="text_suggest" />