我正在使用Solr拼寫檢查。明白並運行。但是,對於某些拼錯它沒有給出預期的結果:Solr拼寫檢查
正確的單詞:巨蟹座
不正確的拼寫:Cacner,cacnar,cancar,cancre,cancere。
我沒有得到「癌症」作爲「cacnar」的建議,而是顯示「內部」,雖然聽起來更像是cacner不是正確的建議。而對於cacnar,我又得到了一個建議:「肺」。
任何配置它顯示癌症而不是其他結果的方式嗎?
或者,在向用戶展示之前可以參考的建議是否有任何分數?
根據要求這裏是配置: 用於字典(在schema.xml中)的字段:
<fieldType name="text_small" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
</analyzer>
<analyzer type ="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
</analyzer>
</fieldType>
:(再次在schema.xml中) 「text_small」 的
<copyField source="procname" dest="dtextspell" />
<field name = "dtextspell" stored="false" type="text_small" multiValued="true" indexed="true"/>
定義
在solrconfig.xml中:
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">text_small</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="classname">solr.IndexBasedSpellChecker</str>
<str name="field">dtextspell</str>
<float name="thresholdTokenFrequency">.0001</float>
<str name="spellcheckIndexDir">./spellchecker</str>
<str name="field">name</str>
<str name="buildOnCommit">true</str>
</lst></searchComponent>
它附加到選擇請求處理器利柯本:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="spellcheck.count">10</str>
<str name="df">text</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr> </requestHandler>
要建立拼寫檢查:
http://localhost:8080/solr/select?q=*:*&spellcheck=true&spellcheck.build=true
要搜索詞:
http://localhost:8080/solr/select?q=procname:%22cacner%22&spellcheck=true&defType=edismax
響應XML:
<lst name="spellcheck"><lst name="suggestions">
<lst name="cacner">
<int name="numFound">1</int>
<int name="startOffset">10</int>
<int name="endOffset">16</int>
<arr name="suggestion">
<str>inner</str> <end tags start from here>
希望它能幫助! !
你配置了拼寫檢查器,還是使用默認的?我可以看到,如果你有任何,你的一些代碼或至少你用來查詢solr的網址? :) –
嘿,按照你的要求添加了代碼。 –
@SamueleMattiuzzo我也有類似的問題,但有點不同在我的情況拼寫更正和建議工作正常....請看看這個...http://stackoverflow.com/questions/22196793/how-get-suggestions-from-solr-server-in-a-php-variable – Naresh