1

3 つのシャードを使用して CloudSolr モードで solr を実行しています。データは既に solr にインデックス付けされています。これで、solrconfig.xml で solrSuggester を構成できました。これは、solrconfig ファイルからの構成です。私はsolr 4.10バージョンを使用しています。

<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
        <str name="name">mysuggest</str>
        <str name="lookupImpl">FuzzyLookupFactory</str>
        <str name="storeDir">suggester_fuzzy_dir</str>
        <str name="dictionaryImpl">DocumentDictionaryFactory</str>
        <str name="field">businessName</str>
        <str name="payloadField">profileId</str>
        <str name="weightField">businessName</str>
        <str name="suggestAnalyzerFieldType">text_general</str>
        <str name="buildOnStartup">false</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>
    </lst>
    <arr name="components">
        <str>suggest</str>
    </arr>
</requestHandler>

結果を取得するために使用しているコマンドは次のとおりです。

http://shard1:8900/solr/core/suggest?suggest=true&suggest.build=true&suggest.reload&suggest.dictionary=mysuggest&wt=json&indent=true&suggest.q=sale

これはコマンドの出力です:

{
"responseHeader":{
"status":0,
"QTime":1490},
"command":"build",
"suggest":{}
}

提案結果には何も入っていません。solr にインデックス化された 10K のレコードがあります。

ログファイルに次のように表示されます。

org.apache.solr.handler.component.SuggestComponent; http://shard1:8983/solr/core/ : null
org.apache.solr.handler.component.SuggestComponent; http://shard2:8900/solr/core/ : null
org.apache.solr.handler.component.SuggestComponent; http://shard3:7574/solr/core/ : null

ここに何が欠けているのか理解できません。ありがとう。

4

1 に答える 1

5

solr が SolrCloud モードで実行されていたため、機能していませんでした。solrCloud モードで提案を実行するには、次の 2 つの方法があります。

  • distrib=falseパラメータを使用します。これにより、コマンドでアクセスしている 1 つのシャードのみからデータがフェッチされます。以下をコンポーネント定義自体に追加できます。

      <bool name="distrib">false</bool> 
    
  • すべてのシャードを検索するには、shards および shards.qt パラメーターを使用ます。shards パラメーターには、クエリに含めるすべてのシャードのコンマ区切りのリストが含まれます。shards.qt パラメーターは、アクセスする reat API を定義します。

shards.qt: シャードへのリクエストを、このパラメーターで指定されたリクエスト ハンドラーに送信する必要があることを Solr に通知します。リクエスト ハンドラが「/spell」の場合、リクエストを行うときに shards.qt=/spell を使用します。

シャード: shards=solr-shard1:8983/solr,solr-shard2:8983/solr分散検索

詳しくはこちらをご確認ください。

于 2015-08-17T15:37:53.640 に答える