2016-04-14 98 views
0

假設一個用戶執行搜索類似:Solr的拼寫檢查多字查詢一些正確的話

red 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 

因爲「紅色」的拼寫是否正確,我得到的結果與「紅色文件「但我對拼寫錯誤的術語沒有得到任何拼寫建議,」計算機專家「。如果我改變了,「紅色」改爲像「reeed」這樣的不正確的東西,我會爲「reed」和「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> 

添加下面indexBasedSpellcheckerComponent這段代碼,

<!-- 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> 

希望這可以幫助您。

0

您需要增加參數spellcheck.maxResultsForSuggest的值,如果有「足夠」的搜索結果,將會阻止建議。嘗試例如添加到您的配置:

<int name="maxResultsForSuggest">500</int>