首先看一下从淘宝输入搜索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. SpringBoot学习(五)

    package org.springboot.sample.config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; impor ...

  2. PHP的数据类型与常量使用

    数据类型之间的相互转换 1.强制转换:setType(变量,类型):这个函数将原变量的类型改变//integer,int,float,double,bool,boolen,string,arry,ob ...

  3. 【BZOJ 2728】 2728: [HNOI2012]与非 (线性基?)

    2728: [HNOI2012]与非 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 813  Solved: 389 Description Inpu ...

  4. 【主席树】BZOJ3524-[Poi2014]Couriers

    [题目大意] 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. [思路 ...

  5. Java并发(十五):并发工具类——信号量Semaphore

    先做总结: 1.Semaphore是什么? Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源. 把它比作是控制流量的红绿灯,比如XX马路要 ...

  6. 【Python笔记】十分钟搞定pandas

    本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook .习惯 ...

  7. python开发_pickle

    pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别.要和其他语言交互,可以使用内置的json包使用pickle模块你可以把Python对象直接保存到 ...

  8. Vue学习记录-画页面

    webstorm 因为之前开发ReactNative的时候,选择了webstorm,这回转战Vue,自然还是用它.如果什么也不做的话,打开Vue工程,编辑区域基本上没有语法高亮.怎么办呢? 安装插件( ...

  9. 将DLL挂接到远程进程之中(远程注入)

    线程的远程注入 要实现线程的远程注入必须使用Windows提供的CreateRemoteThread函数来创建一个远程线程该函数的原型如下:HANDLE CreateRemoteThread(    ...

  10. opencv CxImage 互转 (Mat)

    //to Mat CxImage img; img.Load("C:\\f.jpg"); uint8_t* buf=NULL; int32_t len=0; bool rs =im ...