2012-05-11 19 views
6

solr 3.6を使用しています。suggesterの照合をマルチターム検索の自動補完ソリューションとして使用したいと思います。残念ながら、Suggesterは、単一項ごとに多くの提案が存在する場合でも、複数項検索のための照合を1つだけ返します。私のテストの検索と基礎となるインデックスデータによっては、より多くの照合が存在しなければならないと確信しています。SolgeがSuggesterコンポーネントの照合順序を1つのみ返す

Suggesterの設定に問題がありますか? Q =バイオ+ berのため

<!--configuration --> 
<searchComponent class="solr.SpellCheckComponent" name="suggest"> 
<lst name="spellchecker"> 
    <str name="name">suggest</str> 
    <str name="classname">org.apache.solr.spelling.suggest.Suggester</str> 
    <str name="lookupImpl">org.apache.solr.spelling.suggest.fst.WFSTLookupFactory</str> 
    <str name="field">text</str> <!-- the indexed field to derive suggestions from --> 
    <!--<float name="threshold">0.0005</float> disabled for test--> 
    <str name="buildOnCommit">true</str> 
</lst> 
</searchComponent> 

<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest"> 
<lst name="defaults"> 
    <str name="spellcheck">true</str> 
    <str name="spellcheck.dictionary">suggest</str> 
    <str name="spellcheck.onlyMorePopular">true</str> 
    <str name="spellcheck.count">200</str> 
    <str name="spellcheck.collate">true</str> 
    <str name="spellcheck.maxCollations">10</str> 
</lst> 
<arr name="components"> 
    <str>suggest</str> 
</arr> 
</requestHandler> 

例応答:

<response> 
<lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">4</int> 
</lst> 
<lst name="spellcheck"> 
    <lst name="suggestions"> 
     <lst name="bio"> 
      <int name="numFound">27</int> 
      <int name="startOffset">0</int> 
      <int name="endOffset">3</int> 
      <arr name="suggestion"> 
       <str>bio</str> 
       <str>bio-estetica</str> 
       <str>bio-kosmetik</str> 
            ... 
      </arr> 
     </lst> 
     <lst name="ber"> 
      <int name="numFound">81</int> 
      <int name="startOffset">4</int> 
      <int name="endOffset">7</int> 
      <arr name="suggestion"> 
       <str>beratung</str> 
       <str>bern</str> 
       ... 
      </arr> 
     </lst> 
     <str name="collation">bio beratung</str> 
    </lst> 
</lst> 
</response> 
+0

基本的なSolrのおもちゃアプリ(start.jar)を使用するだけで、この問題に直面します。私はspellcheck.maxCollat​​ionsを含むスペルチェックパラメータの考えられるすべての組み合わせを試しましたが、複数の照合を得ることはできません。どんな洞察にも感謝します。 – nlawson

答えて

14

私はあなたと同じ問題を抱えていた、と私はそれを解決するために管理。複数の照合が適切に機能するためには、いくつかのことを知っておく必要があります。

まず、あなたsolrconfig.xmlrequestHandlerを「示唆」のcomponentsリストの下QueryComponentを指定する必要があります。さもなければあなたのrequestHandlerは索引の照会方法を知らないので、訂正された各照会のヒット数を把握することはできません。クエリにspellcheck.collateExtendedResults=trueを追加した場合は、hitsが0であることがわかります。これは、Solrが訂正されたクエリをインデックスに対してチェックするのを煩わしくないことを示しています。それを追加する最も簡単な方法は、呼び出されたデフォルトQueryComponent、使用することです

INFO: Could not find an instance of QueryComponent. Disabling collation verification against the index.

彼らはやや不透明なエラーメッセージが表示され、この時にヒント「クエリを。」あなたが1以上(当たり前)であることをspellcheck.maxCollationsを設定する必要があり、あまり直感的に、あなたが必要、

第二
<arr name="components"> 
    <str>suggest</str> 
    <str>query</str> 
</arr> 

:だから、XMLに、あなたはあなたに「コンポーネント」の部分を変更したい、上記の投稿しましたspellcheck.maxCollationTriesをいくつかの大きな数値(たとえば1000)に設定します。これらのいずれかがデフォルト(両方とも0)に設定されている場合、Solrは1つの照合のみを行います。また、あなたは第三に1

よりも大きくなるようにspellcheck.countを設定する必要があり、あなたは、検索するフィールド、および語句が含まれるように問合せを変更する必要がは、適切な照合を保証するために、引用符で囲む必要があります。だからあなたのクエリの場合:

q=bio+ber

これは本当にする必要があります:

あなたのケースで明らかに

q=text:"bio+ber"

、「text」はデフォルトのフィールドであるので、あなたは必要ありません。それ。しかし、私の場合は、デフォルト以外のフィールドを使用していたため、指定する必要がありました。それ以外の場合、Solrは「テキスト」フィールドに対してヒット数をカウントし、結果はすべて0ヒットとなり、ランキングは役に立たなくなります。

だから私の場合、クエリはこのように見えた:

q=my_field:"brain+c" 
&spellcheck.count=5 
&spellcheck.maxCollations=10 
&spellcheck.maxCollationTries=1000 
&spellcheck.collateExtendedResults=true 

そして、私の応答は、このように見えた:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">4</int> 
    </lst> 
    <lst name="spellcheck"> 
    <lst name="suggestions"> 
     <lst name="brain"> 
     <int name="numFound">1</int> 
     <int name="startOffset">15</int> 
     <int name="endOffset">20</int> 
     <arr name="suggestion"> 
      <str>brain</str> 
     </arr> 
     </lst> 
     <lst name="c"> 
     <int name="numFound">4</int> 
     <int name="startOffset">21</int> 
     <int name="endOffset">23</int> 
     <arr name="suggestion"> 
      <str>cancer</str> 
      <str>cambrian</str> 
      <str>contusion</str> 
      <str>cells</str> 
     </arr> 
     </lst> 
     <lst name="collation"> 
     <str name="collationQuery">my_field:"brain cancer"</str> 
     <int name="hits">2</int> 
     <lst name="misspellingsAndCorrections"> 
      <str name="brain">brain</str> 
      <str name="c">cancer</str> 
     </lst> 
     </lst> 
     <lst name="collation"> 
     <str name="collationQuery">my_field:"brain contusion"</str> 
     <int name="hits">1</int> 
     <lst name="misspellingsAndCorrections"> 
      <str name="brain">brain</str> 
      <str name="c">contusion</str> 
     </lst> 
     </lst> 
     <lst name="collation"> 
     <str name="collationQuery">my_field:"brain cells"</str> 
     <int name="hits">1</int> 
     <lst name="misspellingsAndCorrections"> 
      <str name="brain">brain</str> 
      <str name="c">cells</str> 
     </lst> 
     </lst> 
    </lst> 
    </lst> 
    <result name="response" numFound="0" start="0"/> 
</response> 

成功!

+0

+1これは私にいくつか試してみました。 – Aaron

+0

'@ nlawson':これらのエラーを解決するのに役立ちますか:[http://stackoverflow.com/questions/27502903/threshold-frequency-is-not-working-in-spell-check-in-solr]&[http ://stackoverflow.com/questions/27484326/getting-most-likely-documents-of-the-query-using-phonetic-filter-in-solr] – iNikkz

0

同じ問題がありました。

これはSolr 3.6.1のバグです(以前のバージョンについては不明)。ご確認ください:https://issues.apache.org/jira/browse/SOLR-2853

は、実はこのコメントは、光を置く:https://issues.apache.org/jira/browse/SOLR-2853?focusedCommentId=13136014&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13136014

可能な回避策は、必要な照合の数に等しくなるようにspellcheck.maxCollat​​ionTriesを指定することですが、それはまた、検索インデックスに対するそれらの照合順序を確認するためにSolrのを強制します。したがって、このプロパティを大きな数値に設定するように注意してください。このパラメータの詳細はhttp://wiki.apache.org/solr/SpellCheckComponent#spellcheck.maxCollationTriesです。

バグはクローズされていませんが、すでに送信されているパッチがあります。

また、Solr 4.0.0-BETAのコードを確認しました。修正済みです。

幸運ソルズ!)

関連する問題