solr学习之(四)_solr4.2.0版本的spellCheck功能的实现
2013-04-20 13:20
309 查看
尽管solr4.2的spellcheck功能已经配置在solr\collection1\conf\solrconfig.xml文件中了,但是我一直没有正确地看到这个模块的效果。晚上再认真看了一下apache_solr_4_cookbook.pdf这本书,然后按照书本描述配置了一下。
在solr4.0以前的版本中,spellcheck功能都需要构建自己的索引,每次配置后都需要更新索引,比较麻烦。而solr4.0以后,通过solr.DirectSolrSpellchecker就可以在main索引中直接用spellcheck功能了。通过观察solr-4.2.0\example\exampledocs\money.xml文件,我们可以看到里面有一个cat属性。
我这里就以cat属性为例,学习一下solr4.2中实现spellcheck的功能。
第一步:把solrconfig.xml的
配置成如下:
然后重启tomcat,在浏览器的地址栏输入:
http://localhost:8983/solr/spell?q=cat:currenc&spellcheck=true
我们就可以看到:
解析一下吧:我输入的q=cat:currenc实际上是没有拼写正确的,正确的应该是currency,cat表示索引的一个field。
所以呢,会有这样的结果反馈:
So easy吧!
在solr4.0以前的版本中,spellcheck功能都需要构建自己的索引,每次配置后都需要更新索引,比较麻烦。而solr4.0以后,通过solr.DirectSolrSpellchecker就可以在main索引中直接用spellcheck功能了。通过观察solr-4.2.0\example\exampledocs\money.xml文件,我们可以看到里面有一个cat属性。
<doc> <field name="id">USD</field> <field name="name">One Dollar</field> <field name="manu">Bank of America</field> <field name="manu_id_s">boa</field> <field name="cat">currency</field> <field name="features">Coins and notes</field> <field name="price_c">1,USD</field> <field name="inStock">true</field> </doc>
我这里就以cat属性为例,学习一下solr4.2中实现spellcheck的功能。
第一步:把solrconfig.xml的
<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> …… </searchComponent> <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> …… </requestHandler>
配置成如下:
<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <str name="queryAnalyzerFieldType">textSpell</str> <lst name="spellchecker"> <str name="name">direct</str> <str name="field">cat</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> </lst> </searchComponent> <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <str name="df">text</str> <str name="spellcheck.dictionary">direct</str> <str name="spellcheck">on</str> <str name="spellcheck.extendedResults">true</str> <str name="spellcheck.count">10</str> <str name="spellcheck.collate">true</str> <str name="spellcheck.collateExtendedResults">true</str> </lst> <arr name="last-components"> <str>spellcheck</str> </arr> </requestHandler>
然后重启tomcat,在浏览器的地址栏输入:
http://localhost:8983/solr/spell?q=cat:currenc&spellcheck=true
我们就可以看到:
<response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">27</int> </lst> <result name="response" numFound="0" start="0"/> <lst name="spellcheck"> <lst name="suggestions"> <lst name="currenc"> <int name="numFound">1</int> <int name="startOffset">4</int> <int name="endOffset">11</int> <int name="origFreq">0</int> <arr name="suggestion"> <lst> <str name="word">currency</str> <int name="freq">4</int> </lst> </arr> </lst> <bool name="correctlySpelled">false</bool> <lst name="collation"> <str name="collationQuery">cat:currency</str> <int name="hits">0</int> <lst name="misspellingsAndCorrections"> <str name="currenc">currency</str> </lst> </lst> </lst> </lst> </response>
解析一下吧:我输入的q=cat:currenc实际上是没有拼写正确的,正确的应该是currency,cat表示索引的一个field。
所以呢,会有这样的结果反馈:
<bool name="correctlySpelled">false</bool> 表示拼写错误 <lst name="collation"> <str name="collationQuery">cat:currency</str> <int name="hits">0</int> <lst name="misspellingsAndCorrections"> <str name="currenc">currency</str> 正确的结果应该是:currency。
So easy吧!
相关文章推荐
- 3月31日学习笔记(6.0版本用Broadcast实现强制下线功能问题)
- 【学习ios之路:UI系列】获取ios系统版本的相关操作. 及 将汉字转化为拼音功能实现
- ORACLE 全文索引功能实现学习笔记
- Atlas学习手记(7):使用DragOverlayExtender实现拖放功能
- [原创]unity3D学习【功能实现】之七:Animator动画以及传递参数,简单功能
- 学习练习 使用Servlet实现用户注册功能
- OpenCV学习笔记-应用trackbar实现按钮功能
- android软件更新功能简易实现(未添加版本比较)
- 【Unity快速实现小功能】动画系统学习小技巧篇(一)——设置动画循环播放
- SpringBoot+Shiro学习之“记住我”和“GIF验证码”功能的实现
- 带你逐步深入了解SSM框架——淘淘商城项目之solr服务器搭建、搜索功能实现
- unreal engine 4学习笔记:实现判断游戏角色朝向功能
- 一款功能强大并且可以结合html5实现本地存储的数据库 – SQLite学习文档
- 栈的学习: 实现括号匹配功能
- 企业级发布版本更新功能实现
- Android service学习总结和利用service实现的后台音乐播放功能
- xml学习(三)---利用xml文件实现数据岛功能(网页显示xml文件中的内容免C#代码操作xml文件)
- (cc)2.6版本Linux上替换系统调用函数实现隐藏文件学习
- Android学习之仿QQ侧滑功能的实现
- Jquery实现发送验证码倒计时功能(无BUG版本)