2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > solr入门之参考淘宝搜索提示功能优化拼音加汉字搜索功能

solr入门之参考淘宝搜索提示功能优化拼音加汉字搜索功能

时间:2021-11-10 17:31:45

相关推荐

solr入门之参考淘宝搜索提示功能优化拼音加汉字搜索功能

/sqh30412/article/details/51211551

首先看一下从淘宝输入搜索关键字获取到的一些数据信息:

第一张:使用拼音的全程来查询 可以看到提示的是匹配的转换的拼音的方式,看最后一个提示项 这里还有一个在指定分类目录下搜索的功能,难道后台还存储的类目的信息? 还有一个标签的信息要存储

第二使用首字母来匹配 这里看不出来 淘宝的东西太多了,首字母直接有了对应的全程

第三使用切断字母的匹配 看的出来 走的还是完全匹配的路径

第四使用汉字匹配的方法 : 这个没得说的 这是主功能了

第五使用 拼音加汉字的方式: 能够匹配到 使用全部的拼音时 这里能看出来是使用了转换的方法了 先将汉字转为拼音 在去匹配

第六 这里使用部分 这个没啥问题 转成拼音后 shouta*

第七 这里应该是先转成拼音 为 stao 看下面一张图搜索结果是吻合的,但是结果太少了, 这里淘宝因该使用了另外的搜索机制了.如果这种方法搜索到的数量不够,那么就使用查询模式 即 再放一个分词的字段用来查询, 我想是分成一个一个的模式 也就是搜索 s 套了 这里不需要考虑顺序了 词中含有这两个就可以了 就是下面的结果了

这里和上面说的是一个道理 从这里 大家应按能猜出来 搜索shtao是没有结果的,可以验证下 如果有兴趣

这里看到没有提示结果,就是没有了 按照猜测出来的两种搜索方式

淘宝处理 对于拼音加汉字问题 应该是使用了双重查询 ,保证汉字是正确匹配的(应该使用的是当个分词字段) 然后再进行汉字转为拼音后的过滤,

学到一点解决拼音加汉字搜索建议的解决方法 新添加一个字段使用完全分词模式即 分成一个 一个 用来做汉字匹配过滤查询 然后再用汉字转拼音查询 当数量不够时再使用一次检索查询 含有关键字即可 不要求位置在首位

下面是自己的搜索建议改造拼音加汉字的改写

1.添加一个汉字单个分词的字段 schema.xml中配置 <fieldtypename="ng1_1"class="solr.TextField"positionIncrementGap="100"> <analyzer> <tokenizerclass="solr.NGramTokenizerFactory"minGramSize="1"maxGramSize="1"/> <filterclass="solr.LowerCaseFilterFactory"/> </analyzer> </fieldtype> <!--单个分词保证汉字正确性--> <fieldname="word_n1"type="ng1_1"indexed="true"stored="false"/> <copyFieldsource="word"dest="word_n1"/>

2.代码中添加过滤部分 //这里添加过滤--要包含的汉字--使用filter增加查询速度 if(StringFilterUtils.filterAll(q)!=null&&StringFilterUtils.filterAll(q).trim().length()>0){ query.set(CommonParams.FQ,BaseSuggestIndex.Fd.word_n1.name()+":"+StringFilterUtils.filterAll(q).trim()); }

对比搜索条件

未优化前

优化后

可以发现汉字输入不正确,就不能出来提示了 下面是一些输入正确的出来的结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。