2012-06-15 6 views
7

現在、私のプラットフォームにApache Solrを検索しており、Suggester機能を使って自動完成しています。Solr Suggesterのスペル候補を返す方法

shi 

特に提案者モジュールのリターンは、以下:私は検索する場合例えばのでしかし、提案者モジュールは、同様スペル提案を返しません

shirt 
shirts 

しかし、私が検索した場合:

shrt 

提案は返されません。私が知りたいのは、

a)これが原因で発生したSuggesterモジュールの設定が間違っていますか? b)Suggesterモジュールは、スペルの候補を返さないように構築されていますか? c)Suggesterモジュールを使用して、綴りの修正提案を2回も要求せずに、スペルの候補を返すにはどうすればよいですか?

私はSolrのドキュメントを読んでいますが、これで進歩を遂げることはできません。あなたがタスクは、次のステップで構成さhttp://wiki.apache.org/solr/SpellCheckComponent

で説明したように代替スペルの選択肢を生成するために、スペルチェックのコンポーネントを設定する必要が

答えて

7

。 - スペル候補のschema.xmlを更新します。フィールドを新しいフィールドにコピーしたい場合は、「スペルチェック」と言ってください。

<copyField source="id" dest="spelling" /> 
<copyField source="name" dest="spelling" /> 
<copyField source="description" dest="spelling" /> 
<copyField source="longdescription" dest="spelling" /> 
<copyField source="category" dest="spelling" /> 
<copyField source="source" dest="spelling" /> 
<copyField source="merchant" dest="spelling" /> 
<copyField source="contact" dest="spelling" /> 
  • 更新solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="df">defaultSearchField</str> <!-- spell check component configuration --> <str name="spellcheck">true</str> <str name="spellcheck.count">5</str> <str name="spellcheck.collate">true</str> <str name="spellcheck.maxCollationTries">5</str> </lst> <!-- add spell check processing after the default search component as configured above completed it's task --> <arr name="last-components"> <str>spellcheck</str> </arr> </requestHandler>

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <lst name="spellchecker"> <!-- decide between dictionary based vs index based spelling suggestion, in most cases it makes sense to use index based spell checker as it only generates terms which are actually present in your search corpus --> <str name="classname">solr.IndexBasedSpellChecker</str> <!-- field to use --> <str name="field">spelling</str> <!-- buildOnCommit|buildOnOptimize --> <str name="buildOnCommit">true</str> <!-- $solr.solr.home/data/spellchecker--> <str name="spellcheckIndexDir">./spellchecker</str> <str name="accuracy">0.7</str> <float name="thresholdTokenFrequency">.0001</float> </lst> </searchComponent>

  • 再インデックスコーパス

  • のテスト提案

    ます。http://:?/ Solrの/選択/ Q =

    response { "responseHeader":{ "status":0, "QTime":12, "params":{ "indent":"true", "q":"coachin"}}, "response":{"numFound":0,"start":0,"docs":[] }, "spellcheck":{ "suggestions":[ "coachin",{ "numFound":1, "startOffset":0, "endOffset":7, "suggestion":["cochin"]}]}}

をcoachinお役に立てば幸いです。

+0

ご回答ありがとうございます。以前はスペルチェックコンポーネントを単独で使用していましたが、検索クエリで結果が見つかった場合、スペルチェックコンポーネントは何も提案しません。なぜSuggesterコンポーネントを使用することにしましたか?たとえば、検索用語「シート」の結果がある場合、スペルフィールドにその可能性が含まれている場合は、「シート」の提案が表示されます。 – newbie

+0

こんにちはDude .. @Nitin Tripathi ここまでうまくいきますが、私の質問は...これを見てください... http://stackoverflow.com/questions/22196793/how-get-suggestions-from-solr -server-in-a-php-variable – Naresh

+0

私にとっては役に立たなかった –

関連する問題