2016-11-23 11 views
0

이것은 this question의 후속 질문입니다. 맞춤법 검사기를 구현하려는 도시 목록이 있습니다. 나는 나와 함께이 도시들의 우선 순위/무게를 가지고있다.FileDictionaryFactory에 의해 storeDir이 생성 될 때도 suggester에서 데이터를 가져올 수 없습니다.

<city-name> <TAB> <weight> <TAB> <other parameters like citycode,country> 

내가 citycode, 국가 등과 같은 파이프로 구분 된 페이로드 문자열과 같은 다른 속성을 전달하고있다 : 나는 다음과 같은 형식의 기본으로 FileDictionaryFactory와 solrsuggester을 구현했습니다.

여기에 지금 직면하고있는 문제는 내가 각각의 모든 검색 쿼리에 대한 0 결과를 얻고 내 solrconfig

<searchComponent name="suggest" class="solr.SuggestComponent"> 
    <lst name="suggester"> 
     <str name="name">mySuggester</str> 
     <str name="lookupImpl">FuzzyLookupFactory</str>  
     <str name="dictionaryImpl">FileDictionaryFactory</str>  
     <str name="field">name</str> 
     <str name="weightField">searchscore</str> 
     <str name="suggestAnalyzerFieldType">string</str> 
     <str name="buildOnStartup">false</str> 
     <str name="sourceLocation">spellings.txt</str> 
     <str name="storeDir">autosuggest_dict</str> 
    </lst> 
    </searchComponent> 

    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> 
    <lst name="defaults"> 
     <str name="suggest">true</str> 
     <str name="suggest.count">10</str> 
     <str name="suggest.dictionary">mySuggester</str> 
    </lst> 
    <arr name="components"> 
     <str>suggest</str> 
    </arr> 
    </requestHandler> 

내 스키마

<field name="name" type="string" indexed="true" stored="true" multiValued="false" /> 
<field name="countrycode" type="string" indexed="true" stored="true" multiValued="false" /> 
<field name="latlng" type="location" indexed="true" stored="true" multiValued="false" /> 
<field name="searchfield" type="text_ngram" indexed="true" stored="false" multiValued="true" omitNorms="true" omitTermFreqAndPositions="true" /> 

<uniqueKey>id</uniqueKey> 
<defaultSearchField>searchfield</defaultSearchField> 
<solrQueryParser defaultOperator="OR"/> 
<copyField source="name" dest="searchfield"/> 

입니다. storeDir이 생성되는 것을 볼 수는 있지만 데이터가있는 bin 파일은 내 페이로드 데이터처럼 보입니다.

  1. storeDir의 창조는 무엇을 의미 않습니다

    나는 내가 다음과 같은 질문을 가지고, 그래서
    /suggest?suggest=true&suggest.dictionary=mySuggester&wt=json&suggest.q=cologne 
    

    를 URL 형식으로 사용하고 있습니까? 색인 생성에 성공 했습니까?
  2. 그렇다면 검색어에 어떤 문제가 있습니까? 그렇지 않다면 나는 여기에 뭔가 빠졌는가? (indexPath ???).
  3. 페이로드 필드에 검색 매개 변수를 제공하는 것이 올바른 방법입니까? 그렇지 않다면 다른 방법이 있습니까?

답변

0

검색 필드를 스키마의 defaultSearchField로 사용했지만 제안 필드로 이름을 구성했습니다. searchfield 및 suggestAnalyzerFieldType 필드를 text_ngram으로 변경 한 순간부터 작업이 시작되었습니다.

<searchComponent name="suggest" class="solr.SuggestComponent"> 
     <lst name="suggester"> 
       <str name="name">suggestions</str> 
       <str name="lookupImpl">FuzzyLookupFactory</str> 
       <str name="dictionaryImpl">FileDictionaryFactory</str> 
       <str name="field">searchfield</str> 
       <str name="weightField">searchscore</str> 
       <str name="suggestAnalyzerFieldType">text_ngram</str> 
       <str name="buildOnStartup">false</str> 
       <str name="buildOnCommit">false</str> 
       <str name="sourceLocation">spellings.txt</str> 
       <str name="storeDir">autosuggest_dict</str> 
     </lst> 
</searchComponent> 

    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> 
     <lst name="defaults"> 
       <str name="suggest">true</str> 
       <str name="suggest.count">10</str> 
       <str name="suggest.dictionary">suggestions</str> 
       <str name="suggest.dictionary">results</str> 
     </lst> 
     <arr name="components"> 
       <str>suggest</str> 
     </arr> 
    </requestHandler> 
: 여기

는 작업 solrconfig입니다
0

solrconfig.xml에 약간의 변경이 있습니다. suggester 구성에서 buildOnStartup을 제거하거나 true로 설정해야합니다.
[solrconfig.xml]

<searchComponent name="suggest" class="solr.SuggestComponent"> 
    <lst name="suggester"> 
     <str name="name">mySuggester</str> 
     <str name="lookupImpl">FuzzyLookupFactory</str>  
     <str name="dictionaryImpl">FileDictionaryFactory</str>  
     <str name="field">name</str> 
     <str name="weightField">searchscore</str> 
     <str name="suggestAnalyzerFieldType">string</str> 
     <str name="buildOnStartup">true</str> 
     <str name="sourceLocation">spellings.txt</str> 
     <str name="storeDir">autosuggest_dict</str> 
    </lst> 
    </searchComponent> 
    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> 
    <lst name="defaults"> 
     <str name="suggest">true</str> 
     <str name="suggest.count">10</str> 
     <str name="suggest.dictionary">mySuggester</str> 
    </lst> 
    <arr name="components"> 
     <str>suggest</str> 
    </arr> 
    </requestHandler> 

은 = 사실 제안 설정하여 쿼리를 통해 자신의 제안을 구축하지 않을 파일을 기반으로 SUGGESTER에 문제가 있습니다. 시작시 파일 기반 제안을 작성해야합니다 ().