solr的suggest模块
solr的suggest模块
solr有个suggest模块,用来实现下拉提醒功能,就是输入了一个文本之后,进行文本建议查找的功能。
suggest请求的url
http://localhost:8983/solr/hotquestions/suggest?suggest=true&suggest.build=true&suggest.dictionary=mySuggester&wt=json&suggest.q=elec
这里可以看到有几个参数:
suggest=true
这个参数必须为true,表示我这次请求是suggest请求。
suggest.q
进行查询建议的文本
suggest.dictionary
搜索组建中词典的名字,这个参数必须填写,你可以在请求体中带上这个参数,也可以在请求参数中带上。
suggest.count
suggest请求返回的suggest数。
suggest.cfg
这个不是必填的,如果suggester支持,用于内容过滤。
suggest.build
如果设置为true,这个请求会导致重建suggest索引。
这个字段一般用于初始化的操作中,在线上环境,一般不会每个请求都重建索引,如果线上你希望保持字典最新,最好使用buildOnCommit或者buildOnOptimize来操作。
suggest.reload
如果设置为true,会重新加载suggest索引。
suggest.buildAll
如果设置为true,会重建所有suggest索引。
suggest.reloadAll
如果设置为true,会重新加载所有suggest索引。
suggest模块的配置
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">cat</str>
<str name="weightField">price</str>
<str name="suggestAnalyzerFieldType">string</str>
</lst>
</searchComponent>
name
suggester的名字,如果设置多个,可以在请求中指定。
lookupImpl
查找方式的具体实现,有几种方式:
- AnalyzingLookupFactory: 这个查询方式先对查询的输入文本进行分析,构建出一个FST树,然后再进行查询。
- FuzzyLookupFactory: 这个查询方式是AnalyzingLookupFactory的扩展,只不过是一种模糊匹配。
- AnalyzingInfixLookupFactory: 这个查询方式对输入的文本进行分析,然后建议出前缀匹配的索引文本。
- BlendedInfixLookupFactory: 这个查询方式是AnalyzingInfixSuggester的扩展,这个查询方式可以为分析后的文本设置一些权重,你可以设置权重正序或逆序。
- FSTLookupFactory: 基于自动机的查询。这个方式构建比较慢,但是使用内存更少。除非你需要更复杂的结果,否则就不需要使用这种方式。
- TSTLookupFactory: 一个简单的,基于trie树的查找。
- WFSTLookupFactory:
- JaspellLookupFactory:
dictionaryImpl
字典的具体实现,具体有几种方式:
- DocumentDictionaryFactory: 一个基于词语,权重,和一个有效的索引中的负荷。
- DocumentExpressionDictionaryFactory: 和DocumentDictionaryFactory一样,但是允许用户设置复杂的"weightExpression"标签来设置权重
- HighFrequencyDictionaryFactory: 允许增加一个阀值来修改返回结果
- FileDictionaryFactory: 允许使用一个外部的文件来包含建议的结果。权重也是可以在外部文件中有所加载的。
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
suggest的handler,主要设置了建议返回的默认个数,默认使用的suggest组件等。
参考文章
solr的suggest模块的更多相关文章
- 智能提示(一) Solr (suggest)
电商搜索中要实现这么一块功能,当输入文字时候.下拉框提示.类似于百度搜索 在师出名门的基于lucene的solr搜索引擎中.提供了 拼写检查和智能提示这块功能. 拼写检查就是用来检查用户输入的检索 ...
- solr suggest智能提示配置
目录 配置文件 Java代码 遇到的问题 回到顶部 配置文件 solrconfig.xml <searchComponent name="suggest" class=&qu ...
- Solr Suggest组件的使用
使用suggest的原因,最主要就是相比于search速度快,In general, we need the autosuggest feature to satisfy two main requi ...
- Solr 6.7学习笔记(04)-- Suggest
当我们使用baidu或者Google时,你输入很少的字符,就会自动跳出来一些建议选项,在Solr里,我们称之为Suggest,在solrconfig.xml里做一些简单的配置,即可实现这一功能.配置如 ...
- Solr调研总结
http://wiki.apache.org/solr/ Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境 ...
- solr教程,值得刚接触搜索开发人员一看
http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍sol ...
- Solr总结
http://www.cnblogs.com/guozk/p/3498831.html Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注 ...
- 【转载】solr教程,值得刚接触搜索开发人员一看
转载:http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍 ...
- Solr+Tomcat+zookeeper部署实战
一 .安装solr 环境说明:centos 7.3,solr 6.6,zookeeper3.4,Tomcat8.5,jdk1.8 zookeeper的部署请参考:http://www.cnblogs. ...
随机推荐
- windows下PHP与Apache的安装配置
1.下载安装apache:官网 http://httpd.apache.org/download.cgi#apache24 下载httpd-2.2.25-win32-x86-no_ssl.msi并安装 ...
- 用JQ仿造百度书籍预售页面的单屏滚页效果
今天的项目需要做到一个介绍页面,我主动提出走单屏滚页的风格,毕竟交互性好,逼格也高,具体效果可以参照百度知道书籍预售页面. 其实现效果就大概是这样的: 还是老样子,所有步骤文件可以从我的Github上 ...
- iOS 视图,动画渲染机制探究
腾讯Bugly特约作者:陈向文 终端的开发,首当其冲的就是视图.动画的渲染,切换等等.用户使用 App 时最直接的体验就是这个界面好不好看,动画炫不炫,滑动流不流畅.UI就是 App 的门面,它的体验 ...
- Aoite 系列(01) - 比 Dapper 更好用的 ORM
Aoite 是一个适于任何 .Net Framework 4.0+ 项目的快速开发整体解决方案.Aoite.Data 适用于市面上大多数的数据库提供程序,通过统一封装,可以在日常开发中简单便捷的操作数 ...
- 一步一步跟我学DeviceOne开发 - 仿微信应用(一,二,三)
这是一个系列的文档,长期目标是利用DeviceOne开发一些目前使用广泛的优质手机应用,我们会最大化的实现这些应用的每一个功能和细节,不只停留在简单的UI模仿和Demo阶段,而是一个基本可以使用的实际 ...
- Java多线程系列--“JUC锁”05之 非公平锁
概要 前面两章分析了"公平锁的获取和释放机制",这一章开始对“非公平锁”的获取锁/释放锁的过程进行分析.内容包括:参考代码获取非公平锁(基于JDK1.7.0_40)释放非公平锁(基 ...
- TCP Server—Linux
#include <stdio.h> #include <netinet/ip.h> #define BUFF_SIZE 1024 int main(int argc,char ...
- 03- Shell脚本学习--字符串和数组
字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似: 单双引号的区别: 双 ...
- D3.js 学习( 一)
<html> <head> <meta charset="utf-8"> <title>第三课:为柱形图添加坐标轴</titl ...
- DOM对象 与 jQuery对象 之间的相互装换
示例代码: //jQuery对象转DOM对象 //因为jQuery对象是一个数组对象,所以转换为DOM对象时要用索引的形式 var $div1 = $("#div1"); //jQ ...