原文URL: http://java.dzone.com/news/solr-and-autocomplete-part-3?mz=33057-solr_lucene

在之前的两个部分( part1、 part2)中,我们学会了如何配置和查询solr来获取自动完成的功能。今天,我们来看一下如果为suggester添加字段,以这种方式来提供自动完成的功能。

组件配置
在上一期的配置组件中添加如下的参数:

Xml代码  
  1. <str name="sourceLocation">dict.txt</str>

这样我们的配置就变成了:

Java代码  
  1. <searchComponent name="suggest" class="solr.SpellCheckComponent">
  2. <lst name="spellchecker">
  3. <str name="name">suggest</str>
  4. <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
  5. <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
  6. <str name="field">name_autocomplete</str>
  7. <str name="sourceLocation">dict.txt</str>
  8. </lst>
  9. </searchComponent>

使用这个参数,我们让suggest组件使用名叫dict.txt的文件作为solr的配置字典。

handler配置
handler的配置也需要添加额外的一个参数:

Xml代码  
  1. <str name="spellcheck.onlyMorePopular">true</str>

完整的配置为:

Xml代码  
  1. <requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchComponent">
  2. <lst name="defaults">
  3. <str name="spellcheck">true</str>
  4. <str name="spellcheck.dictionary">suggest</str>
  5. <str name="spellcheck.count">10</str>
  6. <str name="spellcheck.onlyMorePopular">true</str>
  7. </lst>
  8. <arr name="components">
  9. <str>suggest</str>
  10. </arr>
  11. </requestHandler>

这个参数告诉solr,当查询的结果数多于设定的count数时,返回点击数更多的那些。

Dictionary
我们告诉solr来使用这个字段,那么这个字段长的什么样呢?下面来看一个例子:

引用

# sample dict
Hard disk hitachi
Hard disk wd    2.0
Hard disk jjdd    3.0

这个字典的结果是什么样的呢?每个词组放在单独的一行中,每行以改词组的权重为结束(权重与词组之间以TAB字符分隔),这个权重就是跟 spellcheck.onlyMorePopular=true香港的参数,默认值为1.0。该字段必须以UTF-8的编码格式存储。每行前有#字符的将被忽略(注释行)。

数据
以这种方式,我们不需要数据,字段就是数据。

运行
在重新构建suggester之后,我们来看一下它的运行情况,输入命令:

引用
/suggest?q=Har

得到的结果为:

Xml代码  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <response>
  3. <lst name="responseHeader">
  4. <int name="status">0</int>
  5. <int name="QTime">0</int>
  6. </lst>
  7. <lst name="spellcheck">
  8. <lst name="suggestions">
  9. <lst name="Dys">
  10. <int name="numFound">3</int>
  11. <int name="startOffset">0</int>
  12. <int name="endOffset">3</int>
  13. <arr name="suggestion">
  14. <str>Hard disk jjdd</str>
  15. <str>Hard disk wd</str>
  16. <str>Hard disk hitachi</str>
  17. </arr>
  18. </lst>
  19. </lst>
  20. </lst>
  21. </response>

结束语
跟预期一样,suggest的结果是按权重排序的。这里的大小写敏感(注意首字母).

你有什么建议呢?如果我们有一个很好的字典,这个字典的权重是基于用户的查询行为产生的,那么用户肯定会喜欢它!如果没有好的字典,还是不要用这种方式的好。

Solr的自动完成/自动补充实现介绍(第三部分)相关推荐

  1. Waymo研发经理:《自动驾驶感知前沿技术介绍》

    Waymo研发经理|自动驾驶感知前沿技术介绍 这是Waymo研发经理(VoxelNet作者)的一个最新分享报告:<自动驾驶感知前沿技术介绍>.在这份报告里,介绍了Waymo在自动驾驶感知中 ...

  2. 刷paper利器!不想打开PDF,这个插件自动帮你转到介绍页

    夏乙 发自 凹非寺 量子位 出品 | 公众号 QbitAI 你们刷paper的时候,是愿意直接打开PDF,还是想先打开介绍页看看摘要呢? 量子位更喜欢介绍页,一是因为这个页面经常包含更多有用的信息,比 ...

  3. 自动驾驶虚拟仿真测试介绍(1):是什么

    自动驾驶虚拟仿真测试介绍(1):是什么 一.引子 二.自动驾驶汽车的仿真测试的不同手段 三.不同仿真测试手段的选择 " 本系列尝试从是什么.为什么.用什么测.怎么测和谁来测等方面来介绍什么是 ...

  4. 自动驾驶虚拟仿真测试介绍(7):MIL、SIL、PIL和HIL是个啥

    |作者版权所有,未经许可谢绝转载,转载请联系adsimtest@163.com. "本篇介绍下什么是MIL.SIL.PIL和HIL." 一.基于模型的设计 基于模型的设计方法(MB ...

  5. 单节锂电池充放电及外部供电自动切换的电路--原理介绍

    目录 单节锂电池充放电及外部供电自动切换的电路--原理介绍 1)电源输入与输出 2) 虚线左边的电路是充电电路 3) 虚线右侧的电路是自动切换电路 4)元器件的选择 5)PCB设计建议 单节锂电池充放 ...

  6. 优秀的 jQuery 文本输入框自动完成 自动提示插件

    文框输入框的自动完成和自动提示功能可以帮助用户快速的完成操作,是非常好的产品使用体验.这里向大家推荐一款优秀的 jQuery 文本输入框自动完成 & 自动提示插件,帮助你在网站中轻松添加输入框 ...

  7. QQ虎年春节活动ADB自动助手(自动开星星,自动红包雨下拉,自动团圆饭,自动一笔连)

    QQ虎年春节活动ADB自动助手(自动开星星,自动红包雨下拉,自动团圆饭,自动一笔连) 项目地址:GITHUB QQ虎年春节活动ADB助手 可以进去瞧瞧,顺便别忘了:即便是登录也要给我的博客点个赞啊喂! ...

  8. 电话自动拨号自动录音

    随着人们生活水平的提高和安防意识的增强, 急需开发面向大众.价格低廉.运行可靠的自动报警系统.鉴于住宅电话和移动通信设备的普及, 以及电话语音报警的快捷.有效及价格低廉等优点, 公共通信网成了报警系统 ...

  9. 站长导航系统源码 二开优化 美观自动审核 自动获取网站信息

    介绍: 站长导航系统源码 二开优化 美观自动审核 自动获取网站信息 网盘下载地址: http://www.bytepan.net/7KOqz7bmN33 图片:

最新文章

  1. teginx编译安装FAQ
  2. CentOS系统快捷方式设置
  3. shell启动sublime
  4. 【学术相关】现阶段硕士的困境:读博没信心,不读还闹心
  5. php文件转成css,利用PHP压缩CSS、JS 输出
  6. 前端学习(2033)vue之电商管理系统电商系统之通过路由加载报表
  7. ubuntu安装python编译器_Ubuntu中安装VIM编辑器
  8. php fs 上传文件,PHP操作GridFS存储文件到MongoDB的三种方式
  9. java连接符_使用java流将两个集合的元素与分隔符连接起来
  10. python软件设置代码字体的大小_Pycharm4.5设置字体大小以及背景颜色的方法
  11. 详解static、volatile、const
  12. C#:Interval Helper
  13. [渝粤教育] 云南大学 高级语言程序设计 参考 资料
  14. MySQL中json数据操作(转载)
  15. Flutter实战之自定义日志打印组件
  16. lucene全文检索包括双层PDF
  17. linux match函数,关于VLOOUP函数与index match函数
  18. 通过谷歌身份验证器实现双保险认证(1)
  19. Linux top命令查看多核CPU每个核心的使用率
  20. Scratch3.0——助力新进程序员理解程序(案例九、等差数列2)

热门文章

  1. 基于javaweb在线投票管理系统ssm
  2. 你是我生命中的一缕光
  3. linq介绍及工作中应用两例——左联与内联,linq循环方法
  4. Android_多媒体
  5. surface linux双系统,关于双系统问题。
  6. 如何在winds局域网环境下建立网站
  7. 扬州全国计算机考点,2018年上半年江苏省扬州市计算机等级考试考务通知
  8. [算法导论] Alpha-Beta 剪枝(Alpha-Beta Pruning)
  9. python编写自己的RBF径向基神经网络
  10. 在线电子名片html,一款精致的HTML5电子名片