The begining
There is one thing that you must know – Suggest component is not available in Solr version 1.4.1 and below. To start using this component you need to download 3_x or trunk version from Lucene/Solr SVN.
Configuration
Before we get into the index configuration we need to define an search component. So let’s do it:
view sourceprint?
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.
</lst>
8.
</searchComponent>
It is worth mentioning that suggest component is based on solr.SpellCheckComponent and that’s why we can use the above configuration. We have three important attributes in the configuration:
name - name of the component.
lookupImpl – an object that will handle the search. At this point we have two possibilities to use – JasperLookup or TSTLookup. This second one characterizes greater efficiency.
field – the field on the basis of which suggestions are generated.
Now let’s add the appropriate handler:
view sourceprint?
01.
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
02.
<lst name="defaults">
03.
<str name="spellcheck">true</str>
04.
<str name="spellcheck.dictionary">suggest</str>
05.
<str name="spellcheck.count">10</str>
06.
</lst>
07.
<arr name="components">
08.
<str>suggest</str>
09.
</arr>
10.
</requestHandler>
Quite simple configuration, which defines a handler with an additional search component and tell Solr that the maximum number of suggestions returned is 10, this it should use dictionary named suggest (which is actually a Suggest component) which is exactly the same as our defined component.
Index
Let us assume that our document consists of three fields: id, name and description. We want to generate suggestions on the field that hold the name of the product. Our index could look like this:
view sourceprint?
1.
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
2.
<field name="name" type="text" indexed="true" stored="true" multiValued="false" />
3.
<field name="name_autocomplete" type="text_auto" indexed="true" stored="true" multiValued="false" />
4.
<field name="description" type="text" indexed="true" stored="true" multiValued="false" />
In addition, there is the following copy field definition:
view sourceprint?
1.
<copyField source="name" dest="name_autocomplete" />
Suggesting single words
In order to achieve individual words suggestions text_autocomplete type should be defined as follows:
view sourceprint?
1.
<fieldType class="solr.TextField" name="text_auto" positionIncrementGap="100">
2.
<analyzer>
3.
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
4.
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
5.
<filter class="solr.LowerCaseFilterFactory"/>
6.
</analyzer>
7.
</fieldType>
Suggesting phrases
To implement the entire phrase suggestions our text_autocomplete type should be defined as follows:
view sourceprint?
1.
<fieldType class="solr.TextField" name="text_auto">
2.
<analyzer>
3.
<tokenizer class="solr.KeywordTokenizerFactory"/>
4.
<filter class="solr.LowerCaseFilterFactory"/>
5.
</analyzer>
6.
</fieldType>
If you want to use phrases you may want to define your own query converter.
Dictionary building
Before we start using the component, we need to build its index. To this send the following command to Solr:
view sourceprint?
1.
/suggest?spellcheck.build=true
Queries
Now we come to use of the component. In order to show how the use the component, I decided suggest whole phrases. The example query could look like that:
view sourceprint?
1.
/suggest?q=har
After running that query I got the following suggestions:
view sourceprint?
01.
<?xml version="1.0" encoding="UTF-8"?>
02.
<response>
03.
<lst name="responseHeader">
04.
<int name="status">0</int>
05.
<int name="QTime">0</int>
06.
</lst>
07.
<lst name="spellcheck">
08.
<lst name="suggestions">
09.
<lst name="dys">
10.
<int name="numFound">4</int>
11.
<int name="startOffset">0</int>
12.
<int name="endOffset">3</int>
13.
<arr name="suggestion">
14.
<str>hard drive</str>
15.
<str>hard drive samsung</str>
16.
<str>hard drive seagate</str>
17.
<str>hard drive toshiba</str>
18.
</arr>
19.
</lst>
20.
</lst>
21.
</lst>
22.
</response>
The end
In the next part of the autocomplete functionality I’ll show how to modify its configuration to use static dictionary into the mechanism and how this can helk you get better suggestions. The last part of the series will be a performance comparison of each method in which I’ll try to diagnose which method is the fastest one in various situations.
分享到:
相关推荐
这个"solr-suggest-sample-ui"是一个演示项目,它展示了如何在实际应用中集成和使用 Solr Suggester。下面我们将深入探讨 Solr Suggester 的工作原理、其在 UI 展示中的实现方式,以及与 HTML 的关联。 ### Solr ...
### Solr的安装使用步骤详解 #### Solr概述与特性 **Solr** 是 Apache 下的一个顶级开源项目,它基于 **Lucene** 进行构建,提供了强大的全文搜索能力。相较于 Lucene,Solr 提供了更为丰富的查询语言支持,并且...
《easynet.solr开发与使用》 在现代信息技术领域,搜索引擎已经成为不可或缺的一部分,而Apache Solr作为一款强大的开源搜索引擎,被广泛应用于各种数据检索场景。为了方便开发者更高效地集成和操作Solr,Easynet...
### Solr(Cloudera)使用手册 #### 一、创建Collection与管理实例 在使用Solr(Cloudera)时,创建Collection是基本的操作之一。Collection是Solr中的数据存储单元,相当于关系数据库中的表。 ##### 创建路径与实例 ...
为了在Solr中使用自定义评分组件,你需要在Solr配置文件(如`solrconfig.xml`)中注册这个组件,并在schema配置中指定字段使用该组件。此外,可能还需要配置Solr服务器以加载自定义的JAR文件,这可以通过`lib`标签来...
### Solr分词器使用手册知识点详解 #### 一、Solr概述 - **定义**:Solr是一款基于Java开发的、由Apache基金会维护的顶级开源项目,它...通过合理配置分词器及其他组件,Solr可以有效地满足各种复杂场景下的搜索需求。
Solr 是一个开源的全文搜索引擎,它提供...理解Solr的核心概念,如核心、字段类型和索引,对于有效地使用和管理Solr至关重要。同时,保持对最新官方文档的了解,能够帮助你解决可能出现的问题,提升你的Solr应用能力。
在 Solr 中,索引数据是通过索引器(Indexer)完成的,可以使用 Solr 的 API 或命令行工具批量导入数据。索引数据后,用户可以通过 Solr 的查询接口执行搜索,查询语句可以包含各种条件、过滤器和排序规则,实现复杂...
Solr安装与使用 Solr是一款功能强大的搜索引擎,能够帮助我们快速搭建企业搜索平台。在本文中,我们将详细介绍Solr的安装和使用过程。 一、安装Solr 首先,我们需要下载Solr的安装包。这里我们使用的是Solr 1.3...
要使用solr-dataimport-scheduler.jar,首先需要将该jar包部署到Solr服务器的lib目录下,这样Solr启动时会自动加载这个组件。然后,在Solr的配置文件(如solrconfig.xml)中,你需要定义一个DIH的配置,包括数据源...
"solr6.5使用的IK分词"就是一个针对Solr 6.5版本的中文分词解决方案。 **IK分词器** IK分词器(Intelligent Chinese Analyzer)是由Lucene社区开发的一款高性能的中文分词工具,适用于Java环境。它的主要目标是为...
本文将深入探讨如何使用Apache Nutch与Solr等组件,结合Htmlunit和Selenium WebDriver,来实现对AJAX加载类型页面的全面内容抓取、解析、索引,以及特定数据项的提取。 首先,Apache Nutch是一个开源的Web爬虫框架...
本文将深入讲解 Solr 的使用及安装过程。 一、Solr 简介 Solr 基于 Lucene 库,提供了一个高度可配置和可扩展的平台,用于处理和索引大量数据,支持多种数据源,如文件、数据库等。其主要特性包括: 1. **全文搜索...
IK分词器(Intelligent Chinese Analyzer for Solr)是针对Java环境下Lucene/Solr的高效、灵活的中文分词组件,它的目标是为Java开发人员提供一个快速、稳定、扩展性好的中文分词工具。 在Solr5中,IK分词器已经是...
1. **DataImportHandler (DIH)**:DIH是Solr中的一个核心组件,它提供了从关系型数据库、XML文件或其他数据源导入数据的功能。DIH允许用户编写配置来定义如何将数据转换为Solr文档,并将其导入索引。 2. **...
开发者需要在Solr端配置相应的自动补全逻辑,通常需要使用Solr的suggester组件,它支持多种搜索建议算法,比如Term Query Suggester、Document Lookup Suggester等。 5. 执行效果。在前端页面配置完成后,当用户...
在本文档中,我们将详细介绍如何部署和使用 Solr 5.5.4 版本,包括两种常见的部署方式:Jetty 和 Tomcat,并涉及到中文分词器IKAnalyzer的集成以及对Word文档的支持。 首先,我们需要准备合适的环境,这里要求的是...