2012-02-07 13 views
5

Solrに付属しているインストール設定例のスペルチェッカーをセットアップしました。私はスペルチェッカーの指示に従っています:[http://wiki.apache.org/solr/SpellCheckComponent][1]Solr - スペルチェッカーの例が正しく動作しない

私の問題は、それをたどった後でもまだ動作しないということですか?

応答私が構築します(http:// localhostを:?8983/Solrの/スペルQ = & spellcheck.build =真& spellcheck.q = delll%20ultrashar &スペルチェック=真)

次のようになります。

<response> 
    <lst name="responseHeader"> 
     <int name="status">0</int> 
     <int name="QTime">14</int> 
    </lst> 
     <str name="command">build</str> 
     <result name="response" numFound="17" start="0"> 
     ... 
     </result> 
     <lst name="spellcheck"> 
     <lst name="suggestions"/> 
    </lst> 
</response> 

そして、私はhttp://localhost:8983/solr/spell?q=で照会: & spellcheck.q = delll + ultrashar &スペルチェック=真& spellcheck.extendedResults =真

は私が与えるもの

<response> 
    <lst name="responseHeader"> 
     <int name="status">0</int> 
     <int name="QTime">1</int> 
    </lst> 
    <result name="response" numFound="17" start="0"> 
    ... 
    </result> 
    <lst name="spellcheck"> 
     <lst name="suggestions"> 
     <bool name="correctlySpelled">false</bool> 
     </lst> 
    </lst> 
</response> 

次の応答を取得しますか? schema.xmlに何か不足していますか?

のschema.xmlはここにある:http://www.developermill.com/schema.xml

solrConfig.xmlはここにある:

:サンプルファイルへの変更のみがsolrconfig.xmlで以下の添加がいた

http://www.developermill.com/solrconfig.xml

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 

    <lst name="spellchecker"> 
    <!-- 
     Optional, it is required when more than one spellchecker is configured. 
     Select non-default name with spellcheck.dictionary in request handler. 
    --> 
    <str name="name">default</str> 
    <!-- The classname is optional, defaults to IndexBasedSpellChecker --> 
    <str name="classname">solr.IndexBasedSpellChecker</str> 
    <!-- 
     Load tokens from the following field for spell checking, 
     analyzer for the field's type as defined in schema.xml are used 
    --> 
    <str name="field">spell</str> 
    <!-- Optional, by default use in-memory index (RAMDirectory) --> 
    <str name="spellcheckIndexDir">./spellchecker</str> 
    <!-- Set the accuracy (float) to be used for the suggestions. Default is 0.5 --> 
    <str name="accuracy">0.7</str> 
    <!-- Require terms to occur in 1/100th of 1% of documents in order to be included in the dictionary --> 
    <float name="thresholdTokenFrequency">.0001</float> 
    </lst> 
    <!-- Example of using different distance measure --> 
    <lst name="spellchecker"> 
    <str name="name">jarowinkler</str> 
    <str name="field">lowerfilt</str> 
    <!-- Use a different Distance Measure --> 
    <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str> 
    <str name="spellcheckIndexDir">./spellchecker</str> 

    </lst> 

    <!-- This field type's analyzer is used by the QueryConverter to tokenize the value for "q" parameter --> 
    <str name="queryAnalyzerFieldType">textSpell</str> 
</searchComponent> 
<!-- 
    The SpellingQueryConverter to convert raw (CommonParams.Q) queries into tokens. Uses a simple regular expression 
    to strip off field markup, boosts, ranges, etc. but it is not guaranteed to match an exact parse from the query parser. 

Optional, defaults to solr.SpellingQueryConverter 
--> 
<queryConverter name="queryConverter" class="solr.SpellingQueryConverter"/> 

<!-- Add to a RequestHandler 
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    NOTE: YOU LIKELY DO NOT WANT A SEPARATE REQUEST HANDLER FOR THIS COMPONENT. THIS IS DONE HERE SOLELY FOR 
    THE SIMPLICITY OF THE EXAMPLE. YOU WILL LIKELY WANT TO BIND THE COMPONENT TO THE /select STANDARD REQUEST HANDLER. 
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
--> 
<requestHandler name="/spellCheckCompRH" class="solr.SearchHandler"> 
    <lst name="defaults"> 
    <!-- Optional, must match spell checker's name as defined above, defaults to "default" --> 
    <str name="spellcheck.dictionary">default</str> 
    <!-- omp = Only More Popular --> 
    <str name="spellcheck.onlyMorePopular">false</str> 
    <!-- exr = Extended Results --> 
    <str name="spellcheck.extendedResults">false</str> 
    <!-- The number of suggestions to return --> 
    <str name="spellcheck.count">1</str> 
    </lst> 
    <!-- Add to a RequestHandler 
     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     REPEAT NOTE: YOU LIKELY DO NOT WANT A SEPARATE REQUEST HANDLER FOR THIS COMPONENT. THIS IS DONE HERE SOLELY FOR 
     THE SIMPLICITY OF THE EXAMPLE. YOU WILL LIKELY WANT TO BIND THE COMPONENT TO THE /select STANDARD REQUEST HANDLER. 
     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    --> 
    <arr name="last-components"> 
    <str>spellcheck</str> 
    </arr> 
</requestHandler> 
+0

'solrconfig.xml'と' schema.xml'の関連部分をここに貼り付けてください。 – javanna

+0

ここに2つのリンクがあります。ここでの文字数の制限は、貼り付けるのに少しです。 http://www.developermill.com/solrconfig.xml http://www.developermill.com/schema.xml - >私が行った唯一の変更は、solrconfig.xmlの< –

+0

リンクされた 'solrconfig.xml'があなたの質問に貼り付けられたものと異なっていることに気づきました。あなたはどちらを使っていますか?たぶんあなたはその質問だけに留めておくべきです。 – javanna

答えて

2

textSpellフィールドの定義が間違っています。 、あなたは、すべてが私は推測動作するはずという固定した後

<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
    </analyzer> 
</fieldType> 

、私はあなたが少しあなたの例をクリーンアップに取り組むことをお勧めしたい:以下の断片はschema.xmltypesタグ内にあるべきです基本的に設定できるものがすべて含まれているからです。あなたは本当に必要なものだけを保つべきです。

+0

ありがとうJavanna、私は上記のように私の文書を修正しました。それが問題の一つでした。しかし、別の問題が発生しました。つまり、ビルドクエリがビルドに失敗しましたか? これを解決するには、 true をmy searchComponentに含める必要がありました。誰でもビルドクエリが失敗する理由を知っていますか? –

+0

ログファイル内にエラーが見つかりましたか?インデックスが同じように構築されているので、奇妙です。あなたが変えたのは、それが建てられた瞬間です。これまでは手動でビルドされていましたが、実際にはコミット後に自動的にビルドされていました。 – javanna

+0

ありがとう、私はそれらを見ていきます... –