solr5.3的spellcheck功能

本文介绍如何在Solr中配置拼音智能纠错功能,通过修改schema.xml和solrconfig.xml文件实现基于标题字段的拼写检查及纠错。采用HanLP进行分词,并结合PinyinTransformTokenFilterFactory和PinyinNGramTokenFilterFactory处理拼音。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.增加schema.xml中的检查字段。

<field name="title" type="text_cn" indexed="true" stored="true" required="false" multiValued="false" /> <fieldType name="text_cn" class="solr.TextField"> <analyzer type="index"> <!--使用HanLP分析器进行分词 --> <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" mode="max-word"/> <!-- 将分词结果同时转换为拼音 --> <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" /> <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="6" maxGram="20" /> </analyzer> <analyzer type="query"> <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" mode="max-word"/> <filter class="com.hankcs.lucene.analysis.synonym.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" format="word2vec"/> <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" /> <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="6" maxGram="20" /> </analyzer> </fieldType>

 

2.修改solrconfig.xml内容:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <!--<str name="queryAnalyzerFieldType">text_cn</str> --> <!-- a spellchecker built from a field of the main index --> <lst name="spellchecker"> <str name="name">default</str> <!--这里指明需要根据哪个字段的索引为依据进行拼写检查。现配置 名为 spell 的字段--> <str name="field">title</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">2</int> <float name="maxQueryFrequency">0.01</float> </lst> </searchComponent> <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> <!--默认参数--> <lst name="defaults"> <str name="df">title</str> <str name="spellcheck.dictionary">default</str> <str name="spellcheck">true</str> <!-- <str name="spellcheck.extendedResults">true</str> <str name="spellcheck.count">10</str> <str name="spellcheck.alternativeTermCount">5</str> <str name="spellcheck.maxResultsForSuggest">5</str> --> <str name="spellcheck.collate">true</str> <str name="spellcheck.collateExtendedResults">true</str> <!-- <str name="spellcheck.maxCollationTries">10</str> <str name="spellcheck.maxCollations">5</str> --> </lst> <arr name="last-components"> <str>spellcheck</str> </arr> </requestHandler>

3.重新创建索引使其生效.

PS:参考了另一位博主的文章http://blog.youkuaiyun.com/kevinxxw/article/details/49708311 用的分词器不一样,另外增加了针对拼音的智能纠错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值