【发布时间】:2015-08-24 10:59:43
【问题描述】:
我正在尝试使用 solr.DirectSolrSpellChecker 测试 Solr 4.7.2 的拼写检查功能(您不需要构建专用索引)。
我的索引中有一个名为“title”的字段;我使用复制字段定义创建了一个名为“title_spell”的字段,用于查询拼写检查(title_spell 已正确填写)。但是,在 admin solr 管理控制台中,我总是收到空洞的建议。
例如:我有一个标题为“A B 汽车”的 solr 文档;我在管理控制台中输入(拼写检查交叉并在输入字段 spellcheck.q 下)“atuomobile”。我希望至少能得到“A B 汽车”或“汽车”之类的东西,但拼写检查建议仍然为空......
我的配置:
schema.xml(仅复制相关部分):
<fieldType name="textSpell" 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.SynonymFilterFactory" synonyms="de_DE/synonyms.txt" ignoreCase="true"
expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
</analyzer>
</fieldType>
...
<field name="title_spell" type="textSpell" indexed="true" stored="true" multiValued="false"/>
solr.xml(只复制相关部分):
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">textSpell</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">title_spell</str>
<str name="classname">solr.DirectSolrSpellChecker</str>
<str name="distanceMeasure">internal</str>
<float name="accuracy">0.5</float>
<int name="maxEdits">2</int>
<int name="minPrefix">1</int>
<int name="maxInspections">5</int>
<int name="minQueryLength">4</int>
<float name="maxQueryFrequency">0.01</float>
<float name="thresholdTokenFrequency">.01</float>
</lst>
</searchComponent>
...
<requestHandler name="standard" class="solr.SearchHandler" default="true">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="echoParams">explicit</str>
</lst>
<!--Versuch, das online datum mit in die Gewichtung zu nehmen...-->
<lst name="appends">
<str name="bf">recip(ms(NOW/MONTH,sort_date___d_i_s),3.16e-11,50,1)</str>
<!--<str name="qf">title___td_i_s_gcopy^1e-11</str>-->
<str name="qf">title___td_i_s_gcopy^21</str>
<str name="q.op">AND</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
我错过了什么?感谢您的回答!
【问题讨论】:
-
您能提供您正在使用的查询网址吗?
-
网址如下:
-
localhost:8080/solr/service/select?q=*%3A*&wt=json&indent=true&spellcheck=true&spellcheck.q=atuomobile
-
找到解决方案了吗?
标签: solr lucene spell-checking