`
wbj0110
  • 浏览: 1603514 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Solr的自动完成实现方式(Suggester方式)

阅读更多

开始 
 

这里有一点需要提醒:Suggest组件在1.4.1或以下版本不可用。要使用这个组件,你需要下载3_xlucene/solr的主干版本。 

配置 
在索引配置之前,我们定义一个searchComponent 

复制代码
<searchComponent name="suggest" class="solr.SpellCheckComponent">  
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">name_autocomplete</str>
</lst>
</searchComponent>
复制代码

这个组件是基于solr.SpellCheckComponent的,这样我们就可以使用它的一些配置。配置中有3个非常重要的属性: 


name:
组件名 
lookupImpl
:绑定这个搜索的对象,目前有两个类可以使用-JasperLookupTSTLookup,第二个效率更高 
field
:针对的字段 

现在让我们添加合适的handler 

复制代码
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">  
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
复制代码

 

非常简单的配置,它定义了Search的组件,告诉solr每次建议的最大个数为10,使用上面定义的suggest组件。 

索引 
假设我们的文档有三个字段:idnamedescription。我们想给name字段做自动完成功能,索引配置则为: 

<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>  
<field name="name" type="text" indexed="true" stored="true" multiValued="false" />
<field name="name_autocomplete" type="text_auto" indexed="true" stored="true" multiValued="false" />
<field name="description" type="text" indexed="true" stored="true" multiValued="false" />

 

另外,需要定义一个copyFiled 

<copyField source="name" dest="name_autocomplete" />  

 

单词建议 
为了完成单独词的建议,我们需要定义一个 text_autocomplete的类型

复制代码
<fieldType class="solr.TextField" name="text_auto" positionIncrementGap="100">  
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
复制代码

 

词组建议 
如果实现完整的词组建议,我们的text_autocomplete类型应该定义为: 

<fieldType class="solr.TextField" name="text_auto">  
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

 

如果使用词组,你需要定义自己的转换类(对于中文如庖丁、iK

建立词典 
在我们开始使用该组件前,我们需要对它建立索引,可以使用solr命令: 

 

/suggest?spellcheck.build=true  


查询 
现在终于可以使用这个组件了。使用词组的建议方式,假设查询语句为: 

/suggest?q=har  

 

执行该语句后,得到下面的建议: 

复制代码
<?xml version="1.0" encoding="UTF-8"?>  
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<lst name="spellcheck">
<lst name="suggestions">
<lst name="dys">
<int name="numFound">4</int>
<int name="startOffset">0</int>
<int name="endOffset">3</int>
<arr name="suggestion">
<str>hard drive</str>
<str>hard drive samsung</str>
<str>hard drive seagate</str>
<str>hard drive toshiba</str>
</arr>
</lst>
</lst>
</lst>
</response>
复制代码
分享到:
评论

相关推荐

    捕鱼java源码-solr-autocomplete:Solr自动完成实现

    solr-自动完成 索尔 1.6.7.1.0 7.1.0 1.6.6.5.1 6.5.1 1.6.5.2.0 5.2.0 1.6.6.0.1 6.0.1 1.6.6.3.0 6.3.0 建造 您需要 maven 和 JDK 8: $ mvn clean package 发行说明 1.6.7.1.0 (2017-10-19) 支持 Solr 7.1.0 1.6....

    solr搜索自动补全

    开发者需要在Solr端配置相应的自动补全逻辑,通常需要使用Solr的suggester组件,它支持多种搜索建议算法,比如Term Query Suggester、Document Lookup Suggester等。 5. 执行效果。在前端页面配置完成后,当用户...

    solr定时自动同步数据库需要用到的apache-solr-dataimportscheduler.jar包

    在标题提到的"solr定时自动同步数据库需要用到的apache-solr-dataimportscheduler.jar包"中,`apache-solr-dataimportscheduler.jar`是用于实现Solr数据导入计划任务的扩展插件。这个插件使我们能够设置定时任务,...

    solr实现的搜索引擎

    数据导入到Solr通常有两种方式:使用Solr DataImportHandler (DIH)从关系数据库导入,或使用SolrJ Java客户端API直接推送JSON、XML等格式的数据。在`webapp`目录下的示例可能展示了如何配置DIH来连接数据库并建立...

    Linux上Solr的启动方式

    使用Solr内置的Jetty服务器启动Solr (1)借助X Shell上传solr的安装包到/usr/local/目录下,使用 tar -zxvf命令进行解压.  (2)使用内置的Jetty来启动Solr服务器只需要在example目录下,执行start.jar程序即可,...

    solr自动增量更新jar包

    solr自动增量更新jar包,适用于solr4的版本,希望对大家有帮助

    图解Solr5.3.1 war包方式安装

    ### 图解Solr5.3.1 war包方式安装 #### 一、Solr简介 Solr是一款开源的全文搜索引擎平台,基于Java开发,能够提供高效、稳定的搜索服务。Solr利用Lucene作为其核心搜索库,同时提供了更加丰富的功能集,支持分布式...

    图解solr5.0.1 war包方式安装【原创】

    本文将详细介绍如何通过WAR包的方式安装Solr 5.0.1,并结合图文说明具体操作步骤,帮助读者轻松完成安装过程。 #### 二、准备工作 1. **下载Solr 5.0.1** - 访问官方下载页面:...

    solr实现电商自定义打分

    本篇文章将详细介绍如何利用Solr实现电商自定义打分机制。 首先,我们需要了解Solr的评分(Score)机制。Solr的默认评分是基于TF-IDF(词频-逆文档频率)算法的,它会根据查询词在文档中的出现频率和在整个索引中的...

    solr实现京东搜索

    本篇文章将详细阐述如何利用Solr实现京东搜索的功能。 一、关键词搜索 在商品信息搜索中,关键词搜索是最基础也最重要的功能。用户输入关键词后,Solr会通过分析器对关键词进行分词处理,然后在索引库中匹配与之...

    Solr实现电扇站内搜索

    Solr实现电扇站内搜索Solr实现电扇站内搜索Solr实现电扇站内搜索Solr实现电扇站内搜索

    Dubbo+Solr+RabbitMQ实现Solr数据同步 DataSyncParent.zip

    本项目“Dubbo+Solr+RabbitMQ实现Solr数据同步”结合了三个核心组件,以构建一个可靠的分布式数据同步解决方案。以下是关于这些技术的详细解释: **Dubbo** Dubbo是一款高性能、轻量级的Java开源远程服务调用框架,...

    solr服务器_solr_

    SolrCloud是Solr的分布式实现,它利用ZooKeeper进行集群协调和配置管理。 7. **CloudSolrClient**:在SolrCloud模式下,应用通常使用CloudSolrClient与Solr集群通信,它可以自动处理数据路由和复制,确保高可用性和...

    solr4.7服务搭建

    1. **启动 Tomcat**:启动 Tomcat 服务器,等待 Solr 战包自动部署。 2. **测试连接**:通过浏览器访问 `http://127.0.0.1:8080/solr/`,如果页面显示 Solr 的管理界面,则表示部署成功。 #### 九、中文分词技术...

    Apache Solr(solr-8.11.1.zip)

    9. **安全与认证**:Solr 8.x引入了内置的安全性框架,包括Zookeeper的ACL和Solr的Role-Based Access Control (RBAC),为用户提供了一种保护Solr集群的方式。 10. **JMX监控**:Solr支持Java Management Extensions...

    Solr全文检索.pdf

    6. Solr 的维护方式:Solr 的维护可以通过手动添加或使用 SpringDataSolr 来操作 Solr 索引库,第一次上线的时候可以手动往 Solr 索引库导入一批数据,后期可以自动更新。 7. 全文检索的实现:全文检索是由业务来定...

    solr(solr-9.0.0.tgz)

    然后可以通过POST请求将数据导入Solr,Solr会自动进行分词、建立倒排索引等操作,从而实现快速的全文检索。 Lucene是Solr的核心搜索引擎库,它提供了基本的搜索功能,如倒排索引、TF-IDF评分等。而Solr则在其基础上...

    solr使用和原理

    solr使用和原理 简单明了的介绍了solr的使用和原理,及其部署方式,适合初学者第一次部署

    CDH使用Solr实现HBase二级索引.docx

    CDH 使用 Solr 实现 HBase 二级索引 在大数据处理中,HBase 是一种流行的 NoSQL 数据库,用于存储大量的数据。然而,在查询和检索数据时,HBase 的性能可能不太理想。这是因为 HBase 是基于 Key-Value 的存储方式,...

Global site tag (gtag.js) - Google Analytics