solr自动补全:
http://www.cnblogs.com/ibook360/archive/2011/11/30/2269077.html
在Solr的自动完成/自动补充实现介绍(第一部分) 中我介绍了怎么用faceting的机制来实现自动完成(autocomplete)的功能,今天我们来看一下如何用Suggester的组件来实现自动完成功能.
开始
这里有一点需要提醒:Suggest组件在1.4.1或以下版本不可用。要使用这个组件,你需要下载3_x或lucene/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:绑定这个搜索的对象,目前有两个类可以使用-JasperLookup、TSTLookup,第二个效率更高
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组件。
索引
假设我们的文档有三个字段:id、name、description。我们想给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
查询
现在终于可以使用这个组件了。使用词组的建议方式,假设查询语句为:
执行该语句后,得到下面的建议:
<?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>
结尾
下一部分我将介绍如何修改配置来使用静态的词典信息以及怎么获得更好的建议。该系列的最后一部分将对会这些方法做一个性能的比较,并选出在不同场景下最快的一个。
分享到:
相关推荐
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 Suggester 是 Apache Solr 的一个功能强大的特性,用于提供自动补全和建议功能。这个"solr-suggest-sample-ui"是一个演示项目,它展示了如何在实际应用中集成和使用 Solr Suggester。下面我们将深入探讨 Solr ...
1.学员操作手册-Solr搜索自动补全 2.solr实训教程.doc 3.积分商城基于Solr的搜索引擎优化.pdf 4.基于Solr的搜索引擎优化讲义.pdf 5.课程大纲-基于搜索引擎培训.doc 6.学员操作手册-Solr数据库插入索引.doc 7.学员...
Suggest组件则为Solr提供了自动补全和提示功能,极大地提升了用户体验。 标题中的“solr7.5_ik分词器,suggest配置源文件”指的是在Solr 7.5版本中使用Ik分词器和Suggest组件进行配置和使用的源文件。Ik分词器是...
除了基本的全文检索外,Solr还支持拼音搜索和自动补全等功能。例如,可以通过`SpellCheckResponse`类来获取拼写建议。 ```java SolrQuery spellcheckQuery = new SolrQuery("*:*"); spellcheckQuery.set Spellcheck...
5. 拼写建议与自动补全:Solr内置了拼写检查和自动补全功能,可以帮助用户纠正输入错误并提供相关建议,提升用户体验。 6. 多语言支持:Solr具有内置的多种语言分析器,可以处理不同语言的文本,包括中文、英文、...
Solr 提供了强大的全文搜索、近实时搜索、 faceted search(分面搜索)、命中高亮、拼写检查、自动补全等多种功能,广泛应用于网站内容搜索、电商产品搜索、企业内部文档检索等领域。 **1. Solr 的核心概念** - **...
4. 断词建议:提供拼写纠错和自动补全功能,增强用户体验。 5. 近似搜索:通过模糊匹配,找到与输入关键词相似的搜索结果。 6. 聚类和分类:对搜索结果进行自动聚类,帮助用户发现相关主题。 六、分布式搜索 ...
2. **Hive Editor**:支持编写Hive SQL查询,并提供了自动补全和语法高亮等功能。 3. **Impala Shell**:提供对Impala的交互式查询支持,具有快速响应时间。 4. **Beeswax**:Hue早期版本中的Hive接口,现在已被Hive...
通过正确配置分析器和过滤器,可以处理各种语言的文本,并能够实现复杂的搜索功能,如自动补全、同义词搜索等。 索引与基本数据操作也是Solr中一个关键的环节。索引是将文档数据按照某种逻辑结构存储起来以便于快速...
5. **丰富的功能**:Solr包含多种搜索特性,如 faceted search(分面搜索)、高亮显示、拼写检查和自动补全等。 在提供的压缩包文件"Solr_01"中,包含了可直接运行的Solr实例,这将帮助我们快速上手并理解Solr的...
3. **自动完成(Autocomplete)**:Solr支持实时的搜索建议和自动补全功能,这在构建用户友好的搜索体验时非常关键。实现这一功能通常需要配置`SpellChecker`或`EdgeNgramFilterFactory`,前者用于检查拼写错误,后...
搜索建议可提供自动补全功能,提高用户体验;分组统计允许对结果进行分组计算,如按类别或时间分组;拼音检索则支持基于汉字的拼音搜索,便于用户以拼音形式进行搜索。 Solr的这些特性使得它成为企业级搜索应用的...
2. **检索建议**:在Solr 4.7中,可以配置自动补全和建议功能,这在用户输入时提供即时的搜索建议,提高用户体验。这通常通过配置SpellChecker或Suggester组件来实现,它们可以基于用户的输入历史或者字典文件生成...
8. **搜索建议与自动补全**:Solr可以提供搜索建议和自动补全功能,提升用户输入效率。这通常通过使用Suggester组件实现,它可以基于用户的部分输入提供相关建议。 9. **多格式支持**:Solr支持多种数据输入格式,...
而7、9、10、12章在给定的信息中并没有明确表示可用,但它们可能涉及更进阶的查询处理、结果高亮、自动补全以及如何将Solr部署到生产环境中。 【描述】中提到这本书共有三部分内容:认识Solr、核心Solr功能、进阶...
- 支持自动补全和建议功能,改善用户体验 - 提供丰富的文档处理能力,如文档版本管理、权限控制等 - 支持高亮显示搜索结果,突出显示匹配的关键词 - 支持地理位置搜索,结合地理坐标进行范围查询 - 支持集群模式,...
Solr支持复杂的查询语法,包括布尔逻辑、短语匹配、近似搜索、高亮显示等,同时提供查询建议和自动补全功能,提升用户体验。 1.2.4 核心 Solr的核心(Core)代表独立的索引和配置集合,一个Solr实例可以管理多个...
Solr的特性概览(Features overview), 可能会涉及Solr提供的各种功能,例如全文搜索、高亮显示、结果分组、自动补全、相关性排序、实时索引、动态集群管理、多语言支持等。这些特性使得Solr能够满足从简单到复杂的...