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

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

另一个标签的信息要存储



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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">





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

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



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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

淘宝处理
对于拼音加汉字问题 应该是使用了双重查询 ,保证汉字是正确匹配的(应该使用的是当个分词字段)
然后再进行汉字转为拼音后的过滤,
学到一点解决拼音加汉字搜索建议的解决方法
新加入一个字段使用全然分词模式即 分成一个 一个 用来做汉字匹配过滤查询
然后再用汉字转拼音查询  当数量不够时再使用一次检索查询 含有keyword就可以 不要求位置在首位

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

1.加入一个汉字单个分词的字段
schema.xml中配置
    <fieldtype name="ng1_1" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
  </fieldtype>
    <!-- 单个分词 保证汉字正确性-->
    <field name="word_n1" type="ng1_1" indexed="true" stored="false"/>
    <copyField source="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());
      }



对照搜索条件



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

未优化前





优化后







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
















solr入门之參考淘宝搜索提示功能优化拼音加汉字搜索功能的更多相关文章

  1. webMagic解析淘宝cookie 提示Invalid cookie header

    webMagic解析淘宝cookie 提示Invalid cookie header 在使用webMagic框架做爬虫爬取淘宝极又家页面时候一直提醒cookie设置不可用如下图 淘宝的验证特别严重,c ...

  2. 淘宝天猫关键词SEO优化

    淘宝天猫的网站完全像是一个成熟的搜索引擎,只是从google.bing.baidu改成了淘宝天猫而已,普通搜索引擎有品专,有皇冠,有PC,有无线:淘宝天猫里面有钻展,有直通车,也有PC,无线.搜索引擎 ...

  3. javascript实现 京东淘宝等商城的商品图片大图预览功能

    在京东和淘宝等购买东西的时候,我们会经常预览左侧商品展示图片,把鼠标放到原图,右侧就会有个大图显示出细节.本文将带领大家写一个这样简单的功能! 一.实现原理 当鼠标移入某一图片内部时,图片上部会出现一 ...

  4. Vue(小案例_vue+axios仿手机app)_购物车(二模拟淘宝购物车页面,点击加减做出相应变化)

    一.前言 在上篇购物车中,如果用户刷新了当前的页面,底部导航中的数据又会恢复为原来的: 1.解决刷新,购物车上数值不变                                         ...

  5. javascript实现 京东淘宝等商城的商品图片大图预览功能(图片放大器)

      在京东和淘宝等购买东西的时候,我们会经常预览左侧商品展示图片,把鼠标放到原图,右侧就会有个大图显示出细节.本文将带领大家写一个这样简单的功能! 一.实现原理 当鼠标移入某一图片内部时,图片上部会出 ...

  6. 如何看待淘宝二手交易APP“闲鱼”推出的新功能“闲鱼小法庭”?

    转:https://www.zhihu.com/question/55487716?utm_source=qq&utm_medium=social

  7. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...

  8. 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记

    前言 网购已经不再是现在的时髦,而变成了我们每天的日常生活.上网已经和买买买紧密地联系在了一起,成为了我们的人生信条.而逛街一词,越来越多地变成了一种情怀.有时候我们去逛街,要么是为了打发时间,要么是 ...

  9. 用淘宝ip地址库查ip

    这是一个通过调用淘宝ip地址库实现ip地址查询的功能类 using System; using System.Collections.Generic; using System.Linq; using ...

随机推荐

  1. 【BZOJ 3729】3729: Gty的游戏 (Splay维护dfs序+博弈)

    未经博主同意不得转载 3729: Gty的游戏 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 448  Solved: 150 Description ...

  2. 【期望DP】BZOJ2134- 单选错位

    [题目大意] 有n道题,第i道题有ai个选项.一个人把所有的正确答案填到了后面一题上(特殊的,当i=n的时候填到1上),问他期望做对几道题? [思路] 沙茶题……显然每道题的期望是独立的. 对于某道题 ...

  3. poj 1984 并查集

    题目意思是一个图中,只有上下左右四个方向的边.给出这样的一些边, 求任意指定的2个节点之间的距离. 就是看不懂,怎么破 /* POJ 1984 并查集 */ #include <stdio.h& ...

  4. C程序运行的背后(1)

    一个成功的男人背后,至少有一个伟大的女人:一个不成功的男人,至少有一双手. 而一个C程序,无论成功不成功,它的背后一定有一个操作系统,一个shell,一套工具链. 世界本就不公平.隐藏在显而易见的事实 ...

  5. poj 2828 buy Tickets 用线段树模拟带插入的队列

    Buy Tickets Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2 ...

  6. Linux知识(6)----VIM

    vi的第一版是由Bill Joy在1978年写成的,当时他是UC Berkeley的学生.后来他共同创建了神奇的Sun公司.vi来源于visual一词,目标是在终端上可视化地模拟文本的编辑,是的更人性 ...

  7. DropdownList 赋初始值问题

    网上查了这样的代码 虽然是可以用.但是会点击多次会出现”“ dropdownList不能选多个值的问题“ private void initdroplistitemlirun(string c_Bus ...

  8. Ext NumberField使用

    Ext.onReady(function(){ Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget="side"; v ...

  9. DAC calibrates 4- to 20-mA output current

    Industrial controls make heavy use of 4- to 20-mA current loops to transmit process measurements bec ...

  10. 介绍:一款Mathematica的替代开源软件Mathetics

    Mathetics软件 1 以Python语言实现该系统 2 软件使用的语法与Mathematica同样 3 下载:http://www.mathics.org/ 4 手冊:http://www.ma ...