2016-11-23 8 views
0

これは、this questionの後続の質問です。私はスペルチェッカーを実装したい都市のリストを持っています。私はこれらの都市の優先順位/重みを持っています。私はcitycode、パイプ分離ペイロード文字列として国などのような他の属性を渡していますFileDictionaryFactoryによってstoreDirが作成されても、suggesterでデータを取得できませんでした

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

:私は次の形式をベースとしてFileDictionaryFactoryとsolrsuggesterを実装してみました。

ここに私の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"/> 

だ今、私が直面しています問題は、私はそれぞれ、すべての検索クエリに対して0の結果を取得しています。私はstoreDirが作成されるのを見ることができますが、データが入ったbinファイルが自分のペイロードデータのように見えます。

  1. storeDirの作成が何を意味しない:

    これは私がそう

    /suggest?suggest=true&suggest.dictionary=mySuggester&wt=json&suggest.q=cologne 
    

    を使用していますURL形式ですが、私は次のような質問がありますか?インデックスに登録されていますか?

  2. はいの場合、クエリに何が問題なのですか?いいえ、私はここに何かを紛失していますか?(indexPath ???)
  3. ペイロードフィールドに検索パラメータを入力するのは正しい方法ですか?いいえ、他の方法はありますか?

答えて

0

私はsearchfieldをスキーマでdefaultSearchFieldとして使用していましたが、名前をsuggestフィールドとして設定しました。私はfieldをsearchfieldに、suggestAnalyzerFieldTypeをtext_ngramに変更した瞬間、作業を開始しました。ここで

は作業solrconfigです:

<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> 
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> 

それが= trueを示唆設定することで、クエリを介して自分の提案を構築しません、ファイルベースの提案者に問題があります。 起動時にファイルベースの提案を作成する必要があります

関連する問題