2015-12-24 48 views
0

全部。原諒我我是Solr的新手,我正在嘗試在Solr中添加拼寫檢查。拼寫檢查建議未填充預期結果

目前我可以說它的工作。但我有一個問題,其中的建議沒有按預期顯示。

我試圖用關鍵字lu進行搜索。並期望結果中的建議lung。但它沒有出現。

的鏈接http://10.2.21.38:7574/solr/gettingstarted_shard1_replica2/spell?q=lu&spellcheck=true&spellcheck.collate=true&spellcheck.build=true

只有當我試圖與lun。它可以返回建議lung

enter image description here

任何想法得到它的工作?謝謝。

更新

看來它與配置<str name="accuracy">{number}</str>原值爲0.7的東西。當我將它更改爲像0.001這樣的較小值時。關鍵字lu可以得到建議lung

但是我想知道accuracy是什麼意思。該文件只是說了一點。 The accuracy setting defines the threshold for a valid suggestion。這就對了。

有人可以告訴我更多關於它的信息,以便更好地理解。有沒有其他配置可以影響建議結果?謝謝。

回答

1

準確性設置是指活動StringDistance計算器返回的值(取決於相似性,該值在0和1之間)。 Lucene中的標準距離測量器是LevensteinDistance(原文如此)。我會參考源代碼來看看它是如何工作的 - 我對代碼並不熟悉。返回值至少基於:

return 1.0f - ((float) p[n]/Math.max(other.length(), sa.length)); 

其中p [n]通過代碼中的上述迭代計算得出。

您可以更改拼寫檢查器中的大多數實現,例如距離測量器或拼寫檢查器本身。例子見Spell CheckingmaxEditsminPrefix也可能很有趣。此外,請記住lu有一個相當大的差異,因爲兩個術語都很短,並且沒有真正互相拼錯。還有其他一些方法可以完成自動完成功能,例如Suggest模塊或對通過StrField或KeywordTokenizer-ed字段進行的通配符搜索。

+0

+1感謝您的幫助。這真的給了我更多的信息來做自動完成。我不知道建議也可以做到。謝謝。 –