2016-04-14 7 views
0

は、ユーザーが何かのために検索をしたとスペル:スペルが正しいSolrには、いくつかの正しい言葉でマルチワードクエリをチェック

red computor 

「赤」が、「computorは」ではありません。私は、スペルチェッカーのために、以下の構成を有する:

<lst name="spellchecker"> 
    <str name="name">default</str> 
    <str name="field">spelling</str> 
    <str name="classname">solr.IndexBasedSpellChecker</str> 
    <str name="accuracy">0.5</str> 
    <int name="maxEdits">2</int> 
    <int name="minPrefix">1</int> 
    <int name="maxInspections">5</int> 
    <int name="minQueryLength">3</int> 
</lst> 

次のように私が発行していますクエリは次のとおりです。

http://localhost:8983/solr/collection1/spell?q=computor+red&wt=json&indent=true&spellcheck=true&spellcheck.collate=true 

正しく入力された「赤」ので、私は赤」に関連する文書に結果を得ます"しかし、私はスペルミスの言葉" computor "のためのスペルの提案はありません。私が "reeed"のようなものに "red"を変更した場合、 "reeed"と "computor"のスペルを提案しますが、ある単語が正しく入力されていると思われる場合は、

クエリ内の各受信用語に対してスペルチェッカーを実行するには、クエリまたはスペルチェッカーのいずれかを再構成するにはどうすればよいですか。

+0

解決方法が見つかりましたか? –

+0

私はsolrを使ってこれに対する解決策を見つけませんでした。 – zelinka

答えて

0

私はこれと同じ問題に直面していましたが、solrを使った解決策を見つけました。

古いバージョンを使用している場合、最初のsolrバージョンを最新のSolr-6.1.0にアップグレードします。

IndexBasedSpellCheckerを使用している場合は、文書内にというコンピュータという単語が必要です。フィールドタイプではindex = "true"となります。正しいスペルチェックの変更については

accuracy => 0.001 
minCount => 1 
maxCollationTries => 1 
maxCollations => 1 

となりまし

<int name="maxEdits">2</int> 
<int name="minPrefix">1</int> 
<int name="maxInspections">5</int> 

<!-- a spellchecker that can break or combine words. See "/spell" handler below for usage --> 
<lst name="spellchecker"> 
    <str name="name">wordbreak</str> 
    <str name="classname">solr.WordBreakSolrSpellChecker</str>  
    <str name="field">spelling</str> 
    <str name="combineWords">true</str> 
    <str name="breakWords">true</str> 
    <int name="maxChanges">10</int> 
</lst> 

<!-- Example of using different distance measure --> 
<lst name="spellchecker"> 
    <str name="name">spelling</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> 

はこれが役立つことを願って、indexBasedSpellcheckerComponent以下のコードを追加するために必要でない場合は、これを削除君は。

0

"spellcheck.maxResultsForSuggest"の値を大きくする必要があります。これは、「十分な」検索結果がある場合には推奨できません。たとえば、設定に追加してみてください:

<int name="maxResultsForSuggest">500</int> 
関連する問題