Lucene的“ 建议”模块提供了许多有趣的自动建议实现,以便在用户将每个字符输入搜索框时为他们提供实时搜索建议。

例如, WFSTCompletionLookup将所有建议及其权重编译到一个紧凑的有限状态传感器中 ,从而可以对基本建议进行快速前缀查找。

AnalyzingSuggester使用Analyzer对建议和用户查询进行规范化, Analyzer对此进行了改进,以使Analyzer确定的空白,大小写,停用词,同义词等琐碎差别不会阻止建议匹配。

最后, AnalyzingInfixSuggester允许相匹配,以便每个建议(不只是前缀)内部的话可以触发匹配更进一步。 您可以在我最近创建的Lucene / Solr Jira搜索应用程序 (例如尝试使用“ python”)中看到该动作, 该动作可以吃我们自己的狗粮 。 这也是迄今为止唯一支持突出显示的建议程序实现( 事实证明 ,这对其他建议程序具有挑战性 )。

但是,所有这些建议者的共同限制是,他们只能从有限的一组先前构建的建议中提出建议。 如果您的建议是过去的用户查询,并且您有很多建议(例如,您是Google),那么这可能不是问题。 或者,如果天生就封闭了建议的范围(例如Netflix搜索将建议的电影和电视节目名称或电子商务网站上的所有产品名称),则建议使用一组封闭的建议。

N-Gram语言模型

对于其他所有人,其中大部分传入查询都落入了前所未有的长尾巴中 ,Lucene的最新建议者FreeTextSuggester可以为您提供帮助! 它使用此Google博客文章中描述的方法。

与其精确匹配先前的建议,不如从所有建议中构建一个简单的统计n-gram语言模型 ,并查看最后的标记(加上用户键入的任何最终标记的前缀,如果存在),以预测最可能的下一个标记令牌。

例如,到目前为止,用户的查询可能是:“ flashforge 3d p”,并且由于flashforge是3D打印机的罕见品牌,因此从未向建议者添加此特定建议前缀。 但是,“ 3d打印机”在其他情况下(不同品牌)是一个经常出现的短语。 在这种情况下,即使从未明确添加“ flashforge 3d打印机”作为建议, FreeTextSuggester仍将为下一个标记看到“ 3d”和“ p”前缀并预测打印机。

创建建议者时,您可以指定模型的顺序(N):N的值越大,需要更多的数据来进行正确训练,但可以做出更准确的预测。 还构建了所有低阶模型,因此,如果指定N = 3,则将得到三字母组,二元组和单字母组,它们都被编译为单个加权FST,以最大程度地共享文本令牌。 当然,更大的N将创建更大的FST。 在实践中,N = 3是您应该追求的最高水平,除非您同时拥有大量的建议来训练和RAM以保持最终的FST。

为了处理稀疏数据,在给定上下文(前N-1个单词)的出现频率不足以做出准确的预测的情况下,建议者使用愚蠢的退避语言模型 (是的,这确实是它的名字,是的,它的表现很好!)。

我希望使用此新的FreeTextSuggester的最佳方法将是回退:您将首先使用现有的完全匹配建议者之一,但是当这些建议者找不到给定查询的任何建议时,因为它“不寻常”且已交叉从长尾巴上FreeTextSuggester ,然后又回到FreeTextSuggester

谷歌似乎用这样的模式方法的建议,以及:如果键入“flashforge 3D P”你应该看到这样的事情,其中每个建议涵盖整个查询到目前为止(事实上,谷歌已经听到了flashforge品牌的3D打印机!):

但是,如果您继续输入并输入“ flashforge 3d打印机电源u”,则建议会发生变化:Google不会建议一个完整的查询,而是匹配我键入的所有内容,而是建议最后一两个字:

和往常一样,此功能是非常新的功能,可能包含令人兴奋的错误! 有关详细信息, 请参见Jira问题LUCENE-5214 。 如果您使用这个新的建议者,请在Lucene的用户列表上开始讨论!

参考: 使用我们的JCG合作伙伴 Michael Mc Candless在Lucy Bits博客上使用Lucene的新FreeTextSuggester查找长尾建议 。

翻译自: https://www.javacodegeeks.com/2014/01/finding-long-tail-suggestions-using-lucenes-new-freetextsuggester.html

使用Lucene的新FreeTextSuggester查找长尾建议相关推荐

  1. lucene 多个分词查找_使用Lucene的新FreeTextSuggester查找长尾建议

    lucene 多个分词查找 Lucene的" 建议"模块提供了许多有趣的自动建议实现,以便在用户将每个字符输入搜索框时为他们提供实时搜索建议. 例如, WFSTCompletion ...

  2. 8.20 新股票池操作建议(ZZ)

    8.20 新股票池操作建议(ZZ)[@more@] 一.价值型(属于低估类,适合中线投资) 600056中技贸易 推荐价7.90 现价16.90目标价调高到20.涨停报收,再创新高.空间打开.业绩支持 ...

  3. 9.6新股票池操作建议(ZZ)

    9.6新股票池操作建议[@more@] 9.6新股票池操作建议 一.价值型(属于低估类,适合中线投资) 600056中技贸易 推荐价7.90 现价23.10目标价暂调到25止损价15技术简评:大幅上涨 ...

  4. 8.26新股票池操作建议(ZZ)

    8.26新股票池操作建议[@more@]一.价值型(属于低估类,适合中线投资) 600056中技贸易 推荐价7.90 现价16.78目标价20小幅下跌,跌破五日线.连续上涨后获利回吐,关注10日线支持 ...

  5. 怎么实现两周联动加减速_跑跑卡丁车手游虎王怎么样新道具车虎王购买建议

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注:本文转载自网络,不代表 ...

  6. 关于 Redis 的一些新特性、使用建议和最佳实践

    redis从2009年诞生到现在已经走过将近10年,从最开始大家在讨论nosql和传统关系数据库孰优孰劣,到现在大家谈起分布式锁,缓存纷纷将Redis作为其第一选择,服务端面试中Redis也作为一项必 ...

  7. 【Elasticsearch】Lucene 8 新特性

    1.概述 翻译:What's new in Lucene 8 Apache Lucene 8在几周前发布,有许多令人兴奋的新特性和改进.以下是其中的一些亮点: 2.查询快捷键 在Lucene 7中执行 ...

  8. lucene初探(-):lucene基本,实现文件查找

    1:什么是lucene? Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提 ...

  9. 英文文献去哪里查找,8个超强英文文献查找网站建议收藏

    英文文献去哪里查找?找对方向用对工具可大幅提升学习和研究效率!下面详细介绍8个查找英文文献非常好用的网站. 一.文献党下载器(wxdown.org):该网站几乎整合汇聚了所有文献数据库资源,涵盖各种类 ...

最新文章

  1. 方法到位,Linux也不难学会
  2. 从命令行修改你的Mac DNS(主要在在线恢复mac系统不能上网时候使用)
  3. CF1019E Raining season
  4. 从Chrome中的css自定义样式按钮中删除蓝色边框
  5. 用Delphi开发OPC客户端工具的方法研究
  6. 复现经典:《统计学习方法》​第17章 潜在语义分析
  7. 阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
  8. 数模笔记_多变量最优化计算之牛顿法
  9. 利益相关者软件工程_改善开发人员团队与非技术利益相关者之间交流的方法
  10. ElasticSearch客户端注解使用介绍
  11. php 下载后文件打不开,解决php下载excel无法打开的问题
  12. mysql创建用户和远程登录授权
  13. 云计算里AWS和Azure的探究(3)
  14. 地震matlab频域分析,MATLAB在地震数据分析中的应用
  15. JS中的curry化(柯里化)
  16. openvswitch vxlan 源码分析
  17. Metasploit终端下的辅助扫描工具 (auxiliary模块讲解)
  18. 标题标签<h1></h1>和段落标签<p>
  19. 成长三部曲(一):成长的底层逻辑
  20. PDF工具箱-分割提取合并

热门文章

  1. Android 对话框,确定取消
  2. php破坏代码,php不破坏单词截取子字符串
  3. HashMap的实现原理及其特点
  4. (转)【SpringMvc】如何使用form发送PUT和DELETE请求
  5. IDEA集成maven流程图详细介绍
  6. JDK8的日期时间类1
  7. redis开启redis_Redis聚类
  8. hbase 生成文件_HBase:为客户行为生成搜索点击事件统计信息
  9. java与java ee_RxJava + Java8 + Java EE 7 + Arquillian =幸福
  10. 带有Oracle Digital Assistant和Fn Project的会话式UI