非常经典的solr教程

合集下载

Solr安装使用教程

Solr安装使用教程

Solr安装使⽤教程⼀、安装1.1 安装jdksolr是基于lucene⽽lucene是java写的,所以solr需要jdk----当前安装的solr-7.5需要jdk-1.8及以上版本,下载安装jdk并设置JAVA_HOME即可。

jdk下载地址:1.2 安装solr下载solr,然后解压即可,windows和linux都可以下.tgz(.tgz本质是.tar.gz)和.zip解压出来都⼀样的。

solr下载地址:要注意图中的链接是下载页⾯的链接并不是solr⽂件的链接,直接wget链接就报gzip: solr-7.5.0.tgz: not in gzip format或End-of-central-directory signature not found.了。

1.3 设置系统资源限制设置最⼤进程数t和打开⽂件数为65000(可能其他⼀些资源也要修改但我安装时没见有其他问题,⽂档也没看到专门说明)ulimit -u 65000ulimit -n 65000⼆、solr基本⽤法对于没⽤过的新⼿⽽⾔,⾸先最关⼼的是怎么运⾏起来看这东西长什么样其他什么⾼级⽤法后⽽再说,这⾥我们就来做这件事。

2.1 启停进⼊解压后⽂件的bin⽬录,执⾏:# 启动./solr start# 停⽌./solr stopsolr默认拒绝以root⾝份启动,root加-force选项可以启动,但后续进⾏操作(如创建核⼼等)还是会有问题,推荐使⽤普通⽤户动。

启动完成后默认监听8983端⼝,访问可见界⾯如下2.2 solr核⼼(core)创建与删除在上⾯启动起来的页⾯可以看到solr就是就是这么⼀个界⾯简陋的东西----页⾯简单(没⼏个页⾯)加布局丑陋。

solr中⼀个核⼼(core)相当于⼀个搜索引擎,然后上传⽂件时也是上传到指定核⼼;solr可以建⽴多个solr。

solr默认没有core,我们先来创建⼀个core。

通过命令创建和删除core:# 创建core,-c指定创建的core名./solr create -c test_core1# 删除core,-c指定删除的core名./solr delete -c test_core1完成后回刷新solr界⾯,点击下拉“Core Selector”即可看到刚才建⽴的core,选择core即可进⼊core的管理界⾯,如下图。

solr使用流程

solr使用流程

solr使用流程Solr使用流程一、概述Solr是一个开源的企业级搜索平台,基于Apache Lucene构建。

它提供了强大的全文搜索、分布式搜索、面向文档的搜索和高级搜索功能。

Solr的使用流程可以分为以下几个步骤:准备环境、创建索引、搜索数据。

二、准备环境在开始使用Solr之前,首先需要准备好运行环境。

Solr可以运行在各种操作系统上,包括Windows、Linux和Mac OS。

在安装Solr 之前,确保已经安装了Java Development Kit(JDK),并配置好了JAVA_HOME环境变量。

然后,从Solr官网下载最新版本的Solr,并解压到本地目录中。

三、创建索引1. 定义Schema在开始创建索引之前,需要定义Schema。

Schema是Solr中的模式文件,用于定义索引字段的类型、分析器和其他属性。

可以使用任何文本编辑器打开schema.xml文件,并根据需求进行修改。

常见的字段类型包括文本类型、日期类型、布尔类型等。

2. 导入数据在定义好Schema之后,需要将数据导入到Solr中。

Solr支持多种数据导入方式,包括手动导入和自动导入。

手动导入可通过提交XML或JSON格式的数据来实现,而自动导入则可以通过配置数据源和定时任务来实现。

3. 创建索引数据导入完成后,即可创建索引。

在Solr中,索引是由一系列的文档组成,每个文档都包含多个字段。

可以使用Solr提供的API来创建索引,也可以使用Solr的客户端工具来操作。

创建索引的过程包括向Solr提交文档、更新索引和删除索引等操作。

四、搜索数据创建索引完成后,即可开始搜索数据。

Solr提供了丰富的搜索功能,可以通过关键字、范围、过滤条件等进行高级搜索。

可以使用Solr 提供的查询语法来构建查询语句,并通过HTTP请求将查询发送给Solr服务器。

Solr会返回与查询条件匹配的文档列表。

1. 构建查询语句在构建查询语句时,需要考虑搜索的字段、搜索的关键字和搜索的条件。

Solr的原理及使用

Solr的原理及使用

Solr的原理及使⽤1.Solr的简介Solr是⼀个独⽴的企业级搜索应⽤服务器,它对外提供类似于Web-service的API接⼝。

⽤户可以通过http请求,向搜索引擎服务器提交⼀定格式的XML⽂件,⽣成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

2.⼯作原理solr是基于Lucence开发的企业级搜索引擎技术,⽽lucence的原理是倒排索引。

那么什么是倒排索引呢?接下来我们就介绍⼀下lucence倒排索引原理。

假设有两篇⽂章1和2:⽂章1的内容为:⽼超在卡⼦门⼯作,我也是。

⽂章2的内容为:⼩超在⿎楼⼯作。

由于lucence是基于关键词索引查询的,那我们⾸先要取得这两篇⽂章的关键词。

如果我们把⽂章看成⼀个字符串,我们需要取得字符串中的所有单词,即分词。

分词时,忽略”在“、”的“之类的没有意义的介词,以及标点符号可以过滤。

我们使⽤Ik Analyzer实现中⽂分词,分词之后结果为:⽂章1:⽂章2:接下来,有了关键词后,我们就可以建⽴倒排索引了。

上⾯的对应关系是:“⽂章号”对“⽂章中所有关键词”。

倒排索引把这个关系倒过来,变成: “关键词”对“拥有该关键词的所有⽂章号”。

通常仅知道关键词在哪些⽂章中出现还不够,我们还需要知道关键词在⽂章中出现次数和出现的位置,通常有两种位置:a.字符位置,即记录该词是⽂章中第⼏个字符(优点是关键词亮显时定位快);b.关键词位置,即记录该词是⽂章中第⼏个关键词(优点是节约索引空间、词组(phase)查询快),lucene中记录的就是这种位置。

加上出现频率和出现位置信息后,我们的索引结构变为:实现时,lucene将上⾯三列分别作为词典⽂件(Term Dictionary)、频率⽂件(frequencies)、位置⽂件 (positions)保存。

其中词典⽂件不仅保存有每个关键词,还保留了指向频率⽂件和位置⽂件的指针,通过指针可以找到该关键字的频率信息和位置信息。

solr时间排序用法

solr时间排序用法

solr时间排序用法Solr时间排序用法:Solr是一个开源的全文搜索平台,它提供了强大的排序功能,包括时间排序。

在Solr中,可以使用字段类型和查询参数来实现时间排序。

首先,我们需要在Schema.xml中定义一个适合存储时间的字段类型。

常见的选择是使用"TrieDateField",它可以将日期存储为整数,便于排序和范围查询。

例如:```xml<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"><analyzer><tokenizer class="solr.StandardTokenizerFactory"/></analyzer></fieldType>```接下来,在Schema.xml中定义一个字段来存储时间数据,并将其类型设置为之前定义的日期类型。

例如:```xml<field name="timestamp" type="date" indexed="true" stored="true" multiValued="false"/>```在提交数据时,确保将时间戳数据正确地转换为Solr所期望的格式,然后将其添加到"timestamp"字段中。

要按时间排序查询结果,可以使用Solr的排序参数。

在查询参数中,添加"sort"参数来指定排序的字段和排序顺序。

例如,要按时间降序排序,可以设置"sort=timestamp desc"。

ApacheSolr入门教程(初学者之旅)

ApacheSolr入门教程(初学者之旅)

ApacheSolr⼊门教程(初学者之旅)Apache Solr⼊门教程(初学者之旅)写在前⾯:本⽂涉及solr⼊门的各⽅⾯,建议边思考边实践,相信能帮助你对solr有个清晰全⾯的了解并能简单实⽤。

在Apache Solr初学者教程的这个例⼦中,我们将讨论有关如何安装最新版本的Apache Solr,并告诉你如何配置它。

此外,我们将告诉你如何进⾏使⽤solr的样本数据⽂件索引。

Apache Solr⽀持不同格式,包括各种数据库,PDF⽂件,XML⽂件,CSV⽂件等等。

在这个例⼦中,我们将研究如何从⼀个CSV⽂件索引数据。

⾸选这个例⼦的环境是Windows。

开始Solr安装之前,确保你已经安装了JDK和正确配置JAVA_HOME。

1.为什么选择Apache SolrApache Solr是⼀个功能强⼤的搜索服务器,它⽀持REST风格API。

Solr是基于Lucene的,Lucene ⽀持强⼤的匹配能⼒,如短语,通配符,连接,分组和更多不同的数据类型。

它使⽤ Apache Zookeeper特别针对⾼流量进⾏优化。

Apache Solr提供各式各样的功能,我们列出了部分最主要的功能。

1. 先进的全⽂搜索功能。

2. XML,JSON和HTTP - 基于开放接⼝标准。

3. ⾼度可扩展和容错。

4. 同时⽀持模式和⽆模式配置。

5. 分页搜索和过滤。

6. ⽀持像英语,德语,中国,⽇本,法国和许多主要语⾔7. 丰富的⽂档分析。

2.安装Apache Solr要⾸先让从以下位置下载最新版本的Apache Solr:在撰写本⽂时,可⽤的稳定版本是5.0.0。

Apache Solr经历了从4.XX到5.0.0各种变化了,所以如果你有不同版本的Solr,你需要下载5.xx版本并以此为模板。

⼀旦Solr的zip⽂件下载将它解压缩到⼀个⽂件夹。

提取的⽂件夹看起来像下⾯。

Solr的⽂件夹bin⽂件夹中包含⽤来启动和停⽌服务器的脚本。

Solr使用手册

Solr使用手册

Solr部署及开发一、部署1 环境要求JDK 1.6及以上版本,Tomcat 6及以上,Solr发布版本4.X。

如果使用较低版本,请查看Solr版本支持的JDK版本。

2安装步骤首先安装JDK 1.7和Tomcat 7,配置好环境变量,并下载最新版Solr,目前版本为4.6.0。

如有必要可手动修改Tomcat端口号。

为了支持中文,需要修改tomcat中conf目录下的server.xml文件,在connector 节点中添加字符编码属性URIEncoding,如下:<Connector port="8086" protocol="HTTP/1.1"connectionTimeout="20000" URIEncoding="UTF-8"redirectPort="8443" />◆运行在jetty服务器Solr可以运行在自带的jetty服务器,可按如下步骤运行起来:1、解压solr-4.6.0.zip到你想到存放的路径,比如:d:/solr2、cmd打开命令行窗口,进入d:/solr/example目录3、执行命令:java -jar start.jar4、通过第三步以后,系统会启动solr自带的jetty服务器,通过http://localhost:8983/solr/便可访问solr。

此时,solr已成功启动。

◆运行在Tomcat服务器1、solr.4.6.0.zip解压到指定的目录中,如d:/solr-4.6.0。

2、将d:/solr-4.6.0/example/webapps下的solr.war拷贝到tomcat–>weapps中。

3、新建文件夹d:/sorl_home,将d:/solr-4.6.0/example/solr目录拷贝至d:/sorl_home中,如果要配置为多核应用,可以将solr-4.6.0\example下的multicore拷贝到d:/sorl_home中,这样就会有就会有core0和core1两个应用。

Solr开发指南

Solr开发指南

Solr全文检索技术1.Solr介绍 152.Solr安装配置-SolrCore配置 153.Solr安装配置-Solr工程部署 104.Solr安装配置-Solr工程测试 155.Solr安装配置-多SorlCore配置 106.Solr入门--schema 207.Solr入门-安装中文分词器 158.Solr入门-自定义业务系统Field 209.Solr入门-SolrJ介绍1010.Solr入门-SolrJ索引维护 2011.Solr入门-数据导入处理器2012.Solr入门-搜索语法 1013.Solr入门-SolrJ-搜索 2014.Solr案例-需求分析 1015.Solr案例-架构设计 1516.Solr案例-Service 2017.Solr案例-Controller 2018.Solr案例-主体调试 2019.Solr案例-功能完善1【Solr介绍】1.1S olr是什么Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。

Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。

Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。

Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

1.2S olr与Lucene的区别Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。

solr环境搭建基本使用

solr环境搭建基本使用
2.配置solr全字段文本搜索
stored=”true” 是否存储索引 type=”textCpmplex” 设置该字段
修改
三、Solr使用 1、添加索引 1.1、solrServer初始化
1.2、添加单条索引
1.3 添加集合中数据到solr索引
1.4、将javabean中的数据添加到solr索引
8.3、将中文分词添加到FieldType中
二、Solr使用配置步骤 1、配置solr schema.xml文件 1、1配置应用中用到的自定义field域(因场景而定) 例子如下:
属性说明: multiValued="true" 设置多值域 indexed=”true” 是否设置索引 支持中文分词 name=”你设置的 字段名称”
5、在tomcat server.xml 设置相应的context
6、为context设置相应的环境变量,说明solr的主目录的地址
7、在solrconfig.xml文件中取消VelocityResponseWriter这种输出格式
8、加入中文分词 8.1、下载中文分词器 8.2、将中文分词的包拷贝到server的lib中
找到solr data 索引目录 即可看到分词结果
工程诗博主写的确实没有问题只是他先lr服务与tomcat整合 2. solr使用配置步骤 3. solr使用 4. 推荐分词工具
相关的文章
solr环 境 搭 建 基 本 使 用
一.Solr服务与tomcat整合 2、将solr中的example中的solr拷贝到要作为服务器的位置 3、将相应的solr的web程序也拷贝出来 4、修改solr-->home文件夹中的solrconfig.xml设置data的路径

solr查询语句

solr查询语句

solr查询语句Solr作为企业级搜索引擎,广泛应用于各行各业的信息搜索和数据分析。

而Solr的查询语句是使用Solr进行搜索的核心。

本文将围绕“Solr查询语句”展开,分步骤阐述Solr查询语句的使用方法。

第一步:Solr基本查询语句Solr的基本查询语句是使用关键词q来定义的。

例如,要在title字段中搜索“Solr”,则可以使用以下查询语句:q=title:Solr其中,q表示查询参数,title表示搜索字段,Solr表示搜索的关键词。

此外,Solr的查询语句还可以包含多个搜索条件和逻辑关系。

例如,要查询title字段中包含“Solr”且content字段中包含“搜索引擎”的文档,可以使用以下查询语句:q=title:Solr AND content:搜索引擎其中,AND表示逻辑关系,连接两个查询条件。

第二步:Solr高级查询语句除了基本查询语句外,Solr还提供了一些高级查询语句,可以实现更灵活的搜索方式。

1.模糊搜索模糊搜索是一种模糊匹配的搜索方式,可以通过“~”来实现。

例如,要搜索包含“Solr”或“Solor”的文档,可以使用以下查询语句:q=title:Solr~0.5其中,0.5表示匹配的相似度,越小表示匹配的范围越广。

2.通配符搜索通配符搜索可以使用通配符“?”和“*”进行模糊匹配。

例如,要搜索title字段中以“Sol”开头的文档,可以使用以下查询语句:q=title:Sol*其中,“*”表示匹配任意字符,可以匹配0个或多个字符。

3.boost查询boost查询是一种可以为查询结果打分的查询方式。

例如,对于以下查询语句:q=title:Solr OR content:搜索引擎 AND boost(title:Solr^2)其中,^2表示为title:Solr设置权重为2,搜索结果中包含title字段中的“Solr”更加重要。

第三步:Solr查询语句的优化为了使搜索更加高效和准确,需要对Solr查询语句进行优化。

Solr单机版搭建

Solr单机版搭建

1.搜索工程搭建表现层服务层持久层要实现搜索功能,需要搭建solr服务、搜索服务工程、搜索系统1.1.S olr服务搭建1.1.1.Solr的环境Solr是java开发。

需要安装jdk。

安装环境Linux。

需要安装Tomcat。

1.1.2.搭建步骤第一步:把solr 的压缩包上传到Linux系统第二步:解压solr。

第三步:安装Tomcat,解压缩即可。

第四步:把solr部署到Tomcat下。

第五步:解压缩war包。

启动Tomcat解压。

第六步:把/root/solr-4.10.3/example/lib/ext目录下的所有的jar包,添加到solr工程中。

[root@localhost ext]# pwd/root/solr-4.10.3/example/lib/ext[root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/第七步:创建一个solrhome。

/example/solr目录就是一个solrhome。

复制此目录到/usr/local/solr/solrhome[root@localhost example]# pwd/root/solr-4.10.3/example[root@localhost example]# cp -r solr /usr/local/solr/solrhome[root@localhost example]#第八步:关联solr及solrhome。

需要修改solr工程的web.xml文件。

第九步:启动Tomcathttp://192.168.25.154:8080/solr/和windows下的配置完全一样。

1.1.3.Solr的使用添加文档必须有id域,其他域必须在solr的schema.xml中定义。

1.2.配置业务域schema.xml中定义1、商品Id2、商品标题3、商品卖点4、商品价格5、商品图片6、分类名称7、商品描述创建对应的业务域。

solr使用方法

solr使用方法

solr使用方法Solr是一种开源的搜索平台,基于Apache Lucene构建而成。

它提供了强大的全文检索功能和高性能的分布式搜索能力,广泛应用于各种大型网站和企业应用中。

本文将介绍Solr的使用方法,包括安装配置、数据导入、搜索查询等方面。

一、安装配置1. 下载Solr:访问官方网站,下载最新版本的Solr压缩包。

2. 解压缩:将下载的压缩包解压到指定目录。

3. 启动Solr:进入解压后的目录,执行启动命令,等待Solr启动成功。

4. 访问Solr管理界面:打开浏览器,输入Solr的地址和端口号,进入Solr的管理界面。

二、数据导入1. 创建Core:在Solr管理界面中,创建一个Core,用于存储和管理数据。

2. 定义Schema:在Core中定义Schema,指定数据的字段类型、索引配置等。

3. 导入数据:将数据准备好,使用Solr提供的数据导入工具,将数据导入到Core中。

三、搜索查询1. 构建查询请求:使用Solr提供的查询语法,构建查询请求。

2. 发送查询请求:将查询请求发送给Solr服务器,等待返回结果。

3. 解析查询结果:解析返回的结果,获取需要的信息。

四、高级功能1. 分页查询:通过设置start和rows参数,实现分页查询功能。

2. 排序:通过设置sort参数,实现结果的排序。

3. 过滤查询:通过设置fq参数,实现对结果的过滤。

4. 高亮显示:通过设置hl参数,实现搜索关键词的高亮显示。

5. 聚合统计:通过设置facet参数,实现对搜索结果的聚合统计。

五、性能优化1. 索引优化:通过优化索引结构、字段配置等,提升索引的性能。

2. 查询优化:通过合理使用缓存、调整查询参数等,提升查询的性能。

3. 集群部署:将Solr部署到多台服务器上,实现分布式搜索,提升系统的吞吐量和可用性。

六、常见问题解决1. 乱码问题:通过设置字符集、使用适当的分词器等,解决乱码问题。

2. 性能问题:通过调整配置参数、优化查询语句等,解决性能问题。

Java搜索服务Solr操作指南

Java搜索服务Solr操作指南

Java搜索服务Solr操作指南Java搜索服务Solr操作指南 (1)1. 什么是Solr (3)2. Solr服务器搭建与配置 (3)2.1. 服务器搭建 (3)2.2. 配置业务域 (4)2.3. 删除所有数据(扩充,可不了解) (5)3. Java中SolrJ的使用 (6)3.1. SolrJ使用前配置 (6)3.2. 添加文档 (6)3.3. 删除文档 (7)3.3.1. 根据id删除 (7)3.3.2. 根据查询删除 (7)3.3. 查询索引库 (8)3.3.1. 简单查询 (8)3.3.2. 带高亮显示查询 (9)4. 关于Solr集群SolrCloud (10)5. Solr集群的搭建 (11)5.1. Zookeeper集群搭建 (11)5.2. Solr集群的搭建 (13)5.3. Solr集群分片与删除处理 (14)6. 使用SolrJ操作集群 (14)6.1. SolrJ使用前配置 (14)6.2. 添加文档 (15)6.3. 查询文档 (15)1. 什么是SolrSolr是一个独立的基于全文检索的企业级搜索应用服务器。

将文档通过Http 利用XML加载到Solr的搜索集合中;然后用户通过Http Get操作发送查找请求,并得到搜索的返回结果。

2. Solr服务器搭建与配置2.1. 服务器搭建Solr是由Java开发的,所以服务器的搭建需要Java环境,同时这里介绍在Linux系统中采用Tomcat进行Solr服务搭建步骤。

步骤如下:第一步:准备Tomcat压缩包和Solr压缩包第二步:上传到Linux系统,并解压两个压缩包。

第三步:找到Solr解压包目录中的/example/webapps/solr.war文件复制到tomcat解压包目录中的/webapps文件夹下,然后cd到tomcat的bin目录,运行tomcat,将会自动把solr.war文件进行解压。

第四步:将Solr解压包目录/example/lib/ext/中的所有jar包复制到刚刚解压的solr工程目录路径/WEB-INF/lib/的文件夹下面。

solr 查询语法

solr 查询语法

solr 查询语法一、Solr简介Solr是一个基于Lucene的全文搜索引擎,使用Java语言开发,提供了丰富的API接口,可以方便地与其他应用集成。

Solr支持多种数据格式的索引和查询,并且具有高效、稳定、可扩展等优点,被广泛应用于企业级搜索、电子商务、新闻媒体等领域。

二、Solr查询语法介绍Solr查询语法是指在Solr中进行搜索时可以使用的一系列关键字和操作符,用于构建查询表达式,从而实现对索引数据的检索。

下面将详细介绍Solr查询语法的各个组成部分。

1. 基本查询语法Solr中最基本的查询语法是通过在搜索框中输入关键词来进行检索。

例如:在搜索框中输入“apple”,则会返回包含“apple”关键词的所有文档。

此外,还可以通过布尔运算符(AND/OR/NOT)来组合多个关键词进行检索。

2. 通配符查询通配符查询是指使用通配符(*或?)来代替一个或多个字符进行模糊匹配。

例如:在搜索框中输入“appl*”,则会返回包含以“appl”开头的所有文档。

3. 短语匹配短语匹配是指在搜索框中输入多个关键词,使用双引号将其括起来,从而实现对整个短语的匹配。

例如:在搜索框中输入“apple iphone”,则会返回包含“apple iphone”短语的所有文档。

4. 范围查询范围查询是指通过指定某个字段的取值范围来进行检索。

例如:在搜索框中输入“price:[10 TO 100]”,则会返回价格在10到100之间的所有文档。

5. 布尔运算符Solr支持三种布尔运算符:AND/OR/NOT。

可以使用这些运算符将多个关键词组合起来进行检索。

例如:在搜索框中输入“apple AND iphone”,则会返回同时包含“apple”和“iphone”关键词的所有文档。

6. 模糊查询模糊查询是指使用~操作符来进行模糊匹配。

例如:在搜索框中输入“appl~”,则会返回包含类似于“appl”的单词的所有文档。

7. 正则表达式查询Solr支持使用正则表达式进行检索,可以通过使用/操作符将正则表达式括起来。

Solr使用入门指南

Solr使用入门指南

Solr使用入门指南Solr使用入门指南1.引言1.1 Solr简介1.2 Solr的主要特性1.3 Solr的应用场景2.安装和配置2.1 系统要求2.2 Solr2.3 安装Solr2.4 配置Solr3.索引和查询数据3.1 创建索引3.2 添加和更新文档3.3 查询和过滤数据3.4 排序和分页3.5 删除文档和索引3.6 事务和并发控制4.Schema和字段类型4.1 Schema.xml文件4.2 字段类型4.3 动态字段4.4 字段属性5.过滤器和分析器5.1 Tokenizer和TokenFilter 5.2 内置的过滤器和分析器5.3 自定义过滤器和分析器6.查询解析器6.1 自然语言查询解析器6.2 布尔查询解析器6.3 Phrase查询解析器6.4 范围查询解析器6.5 多关键词查询解析器7.高级搜索功能7.1 Faceted Search7.2 Spatial Search7.3 拼写检查7.4 查询建议8.分布式Solr8.1 分片和副本8.2 集群配置8.3 分布式索引和查询9.性能调优9.1 索引性能优化9.2 查询性能优化9.3 缓存调优9.4 硬件优化10.监控和管理10.1 Solr的监控工具 10.2 日志管理10.3 Solr的安全机制10.4 Solr的备份和恢复11.示例应用11.1 e-commerce应用11.2 新闻搜索应用11.3 电子图书馆应用12.附件本文档涉及附件。

法律名词及注释:- Solr:一种开源搜索平台,基于Apache Lucene构建,提供强大的全文搜索、分布式搜索和大数据处理能力。

- Schema:Solr中定义索引结构的配置文件,用于指定字段类型、字段属性等。

- Tokenizer:将输入文本拆分为单词或单个词组的组件。

- TokenFilter:对输入单词进行处理的组件,例如大小写转换、词根化等。

- Faceted Search:分层搜索,允许用户根据多个分类维度进行搜索。

Solr入门实战(4)--Java操作Solr

Solr入门实战(4)--Java操作Solr

Solr⼊门实战(4)--Java操作Solr本⽂主要介绍使⽤ Java 来操作 Solr,⽂中所使⽤到的软件版本:Java 1.8.0_191、Solr 8.9.0。

1、定义 Schema 信息假设⼀个描述诗⼈信息的⽂档包含如下字段:字段描述id唯⼀主键age年龄name姓名poems诗歌about简介success成就定义的 schema 信息如下:<field name="about" type="text_ik" uninvertible="true" indexed="true" stored="true"/><field name="age" type="pint" uninvertible="true" indexed="true" stored="true"/><field name="content" type="text_ik" uninvertible="true" indexed="true" stored="true" multiValued="true"/><field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/><field name="name" type="text_ik" uninvertible="true" indexed="true" stored="true"/><field name="poems" type="text_ik" uninvertible="true" indexed="true" stored="true"/><field name="success" type="text_ik" uninvertible="true" indexed="true" stored="true"/>2、Java 操作 Solr2.1、引⼊依赖<dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>8.9.0</version></dependency><dependency><groupId>org.apache.solr</groupId><artifactId>solr-core</artifactId><version>8.9.0</version></dependency>2.2、编写 demo2.2.1、增加/更新⽂档@Testpublic void update() throws IOException, SolrServerException {SolrInputDocument document = new SolrInputDocument();document.addField("id", "123456");document.addField("age", 30);document.addField("name", "李⽩2");document.addField("poems", "望庐⼭瀑布");document.addField("about", "字太⽩");document.addField("success", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度");SolrInputDocument document2 = new SolrInputDocument();document2.addField("id", "123457");document2.addField("age", 31);document2.addField("name", "杜甫");document2.addField("poems", "望岳");document2.addField("about", "字⼦美");document2.addField("success", "唐代伟⼤的现实主义⽂学作家,唐诗思想艺术的集⼤成者");solrClient.add(coreName, document);solrClient.add(coreName, document2);mit(coreName, true,true);}还可以通过实体类来增加/更新⽂档:@Testpublic void update2() throws IOException, SolrServerException {PoetInfo info = new PoetInfo("123456", 40, "李⽩", "望庐⼭瀑布", "字太⽩", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度"); solrClient.addBean(coreName, info);mit(coreName, true,true);}2.2.2、查询⽂档/*** 通过 MapSolrParams 查询*/@Testpublic void query() throws IOException, SolrServerException {Map<String, String> map = new HashMap<>();//查询条件map.put("q", "*:*");//要显⽰的内容map.put("fl", "id,age,name,poems");//排序⽅式map.put("sort", "id asc");MapSolrParams solrParams = new MapSolrParams(map);QueryResponse queryResponse = solrClient.query(coreName, solrParams); SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 通过 solrQuery 查询*/@Testpublic void query2() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery); SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 查询返回实例类对象*/@Testpublic void query3() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addField("about");solrQuery.addField("success");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery); List<PoetInfo> list = queryResponse.getBeans(PoetInfo.class);("查询到{}个⽂档!", list.size());for (PoetInfo info : list) {(info.toString());}}2.2.3、删除⽂档/*** 根据id删除⽂档*/@Testpublic void delete() throws IOException, SolrServerException {solrClient.deleteById(coreName, "123456");mit(coreName, true,true);}/*** 根据查询删除⽂档*/@Testpublic void delete2() throws IOException, SolrServerException {solrClient.deleteByQuery(coreName, "name:杜甫");mit(coreName, true,true);}2.2.4、完整代码package com.abc.demo.general.solr;import org.apache.solr.client.solrj.beans.Field;public class PoetInfo {@Fieldprivate String id;@Fieldprivate Integer age;@Fieldprivate String name;@Fieldprivate String poems;@Fieldprivate String about;@Fieldprivate String success;public PoetInfo() {}public PoetInfo(String id, Integer age, String name, String poems, String about, String success) { this.id = id;this.age = age; = name;this.poems = poems;this.about = about;this.success = success;}@Overridepublic String toString() {return "Info{" +"id='" + id + '\'' +", age=" + age +", name='" + name + '\'' +", poems='" + poems + '\'' +", about='" + about + '\'' +", success='" + success + '\'' +'}';}public String getId() {return id;}public void setId(String id) {this.id = id;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getAbout() {return about;}public void setAbout(String about) {this.about = about;}public String getSuccess() {return success;}public void setSuccess(String success) {this.success = success;}}PoetInfopackage com.abc.demo.general.solr;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.impl.HttpSolrClient;import org.apache.solr.client.solrj.response.QueryResponse;import mon.SolrDocument;import mon.SolrDocumentList;import mon.SolrInputDocument;import mon.params.MapSolrParams;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;public class SolrCase {private static Logger logger = LoggerFactory.getLogger(SolrCase.class);private HttpSolrClient solrClient;private String coreName = "new_core";@Beforepublic void before() {solrClient = new HttpSolrClient.Builder("http://10.40.100.69:8983/solr").withConnectionTimeout(10000).withSocketTimeout(60000).build();}@Afterpublic void after() throws IOException {solrClient.close();}@Testpublic void update() throws IOException, SolrServerException {SolrInputDocument document = new SolrInputDocument();document.addField("id", "123456");document.addField("age", 30);document.addField("name", "李⽩2");document.addField("poems", "望庐⼭瀑布");document.addField("about", "字太⽩");document.addField("success", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度"); SolrInputDocument document2 = new SolrInputDocument();document2.addField("id", "123457");document2.addField("age", 31);document2.addField("name", "杜甫");document2.addField("poems", "望岳");document2.addField("about", "字⼦美");document2.addField("success", "唐代伟⼤的现实主义⽂学作家,唐诗思想艺术的集⼤成者");solrClient.add(coreName, document);solrClient.add(coreName, document2);mit(coreName, true,true);}@Testpublic void update2() throws IOException, SolrServerException {PoetInfo info = new PoetInfo("123456", 40, "李⽩", "望庐⼭瀑布", "字太⽩", "创造了古代浪漫主义⽂学⾼峰、歌⾏体和七绝达到后⼈难及的⾼度"); solrClient.addBean(coreName, info);mit(coreName, true,true);}/*** 通过 MapSolrParams 查询*/@Testpublic void query() throws IOException, SolrServerException {Map<String, String> map = new HashMap<>();//查询条件map.put("q", "*:*");//要显⽰的内容map.put("fl", "id,age,name,poems");//排序⽅式map.put("sort", "id asc");MapSolrParams solrParams = new MapSolrParams(map);QueryResponse queryResponse = solrClient.query(coreName, solrParams);SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 通过 solrQuery 查询*/@Testpublic void query2() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery);SolrDocumentList documents = queryResponse.getResults();("查询到{}个⽂档!", documents.getNumFound());for (SolrDocument document : documents) {String id = (String)document.getFieldValue("id");Integer age = (Integer)document.getFieldValue("age");String name = (String)document.getFieldValue("name");String poems = (String)document.getFieldValue("poems");("id={},age={},name={},poems={}", id, age, name, poems);}}/*** 查询返回实例类对象*/@Testpublic void query3() throws IOException, SolrServerException {SolrQuery solrQuery = new SolrQuery("*:*");solrQuery.addField("id");solrQuery.addField("age");solrQuery.addField("name");solrQuery.addField("poems");solrQuery.addField("about");solrQuery.addField("success");solrQuery.addSort("id", SolrQuery.ORDER.asc);//设置返回的⾏数solrQuery.setRows(10);QueryResponse queryResponse = solrClient.query(coreName, solrQuery);List<PoetInfo> list = queryResponse.getBeans(PoetInfo.class);("查询到{}个⽂档!", list.size());for (PoetInfo info : list) {(info.toString());}}/*** 根据id删除⽂档*/@Testpublic void delete() throws IOException, SolrServerException {solrClient.deleteById(coreName, "123456");mit(coreName, true,true);}/*** 根据查询删除⽂档*/@Testpublic void delete2() throws IOException, SolrServerException {solrClient.deleteByQuery(coreName, "name:杜甫");mit(coreName, true,true);}}SolrCase3、Java 操作 SolrCloudJava 操作 SolrCloud 与 Java 操作 Solr 很类似,主要区别有:1、连接使⽤的类不同,连接 Solr 使⽤的是 HttpSolrClient,连接 SolrColud 使⽤的是 CloudHttp2SolrClient。

【IT专家】solr6.6教程

【IT专家】solr6.6教程

本文由我司收集整编,推荐下载,如有疑问,请与我司联系solr6.6教程2017/07/06 2085 整理多半天的solr6.6,终于算是把solr6.6中配置数据库弄出来了,网上的文章千篇一律,各说个的,没有一篇统一覆盖solr6.6版本配置的帖子,本章节我会把配置的一些注意事项一一列举,由于时间原因,本片只介绍如何一次性导入数据,不附带增量导入,想看增量的同学可以在后面的文章中。

 1,配置准备 本文的前提是你已经配置好了solr,并新创建了一个core,我们下面都会按照前一篇文章中的core_demo为基础开始 2,修改soreconfig.xml 在soreconfig.xml的requestHandler name=“/select” 上面添加如下代码: requestHandler name=“/dataimport” lst name=“defaults” str name=“config” data-config.xml /str /lst /requestHandler 注意:需要确认文件中不存在其他的dataimport,如果存在直接替换即可 在同级目录下创建data-config.xml文件,然后配置数据库相关属性 ?xml version=“1.0” encoding=“UTF-8”? dataConfig dataSource name=“source1” type=“JdbcDataSource” driver=“com.mysql.jdbc.Driver” url=“jdbc:mysql://127.0.0.1:3306/ecejcallcenter” user=“root” password=“123456” / document entity name=“cc_bill” dataSource=“source1” pk=“bill_id” query=“SELECT cc_bill.bill_id,cc_bill.`name`,cc_bill.address,cc_bill.city_name,cc_bill.create_time FROM cc_bill” field column=‘bill_id’ name=‘billid’ / field column=‘name’ name=‘name’ / field column=‘address’ name=‘address’ / field column=‘city_name’ name=‘cityname’ / field column=‘create_time’ name=‘createtime’ dateTimeFormat=‘yyyy-MM-dd HH:mm:ss’ / /entity /document /dataConfig 关于详细的配置请参照:blog.csdn/boolbo/article/details/50352331 官方wiki:https://cwiki.apache/confluence/display/solr/ 3,配置managed-schema.xml。

Solr学习文档

Solr学习文档

Solr学习文档1.Solr的安装部署a)下载Apache-Solr-1.4b)解压文件,在dist下载拿到Solr.war文件c)把Solr文件放在Tomcat/WebApps下面d)再把解压文件exsmplex下的solr放在一个特定位置。

然后记录其路径e)然后Tomcat会根据Solr.war生成一个Solr文件夹,在这个文件夹里面找到web.xmlf)更改web.xml里面的配置<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>exsmplex下solr存放的路径</env-entry-value><env-entry-type>ng.String</env-entry-type></env-entry>g)然后进行访问。

出现“Welcome to Solr”2.中文分词a)下载mmseg4j-1.8.3.zipb)配置Solr下的Schema.xmlc)添加fieldType以及field3.配置文件a)Schema.xml 这个相当于数据表配置文件,它定义了加入索引的数据的数据类型的i.在fields结点内定义具体的字段(类似数据库中的字段),就是filed,filed定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否有多个值)等等。

<fields><field name="content"type="text"indexed="true"stored="false"/><field name="keywords"type="keyword_text"indexed="true"stored="false"multiValued="true"/><field name="all"type="text"indexed="true"stored="false"multiValued="true"/></fields>b)SolrConfig配置Solr一些基本信息4.Solr Multicore新特性:一个Tomcat配置多个Solr<?xml version="1.0"encoding="UTF-8"?><solr persistent="false"><cores adminPath="/admin/cores"><core name="core0"instanceDir="core0"/><core name="core1"instanceDir="core1"/></cores></solr>5.通过httpClient建立索引public static final String SOLR_URL="http://localhost/solr/core0";public static void commit(){Date date=new Date();SolrServer solr=new CommonsHttpSolrServer(SOLR_URL);SolrInputDocument sid=new SolrInputDocument();sid.addField("id",i);solr.add(sid);mit();6.Solr查询参数说明在做solr查询的时候,solr提供了很多参数来扩展它自身的强大功能!以下是使用频率最高的一些参数!具体请看1.常用q - 查询字符串,必须的。

solr全文检索_初级教程

solr全文检索_初级教程

Apache Solr 初学者——初级教程(介绍、安装部署、Java接口、中文分词)Apache Solr 介绍Solr 是什么?Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。

服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解Java 技术会有用却不是必须的要求。

Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。

而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。

Lucene 是什么?Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。

Lucene 目前是 Apache Jakarta 家族中的一个开源项目。

也是目前最为流行的基于 Java 开源全文检索工具包。

目前已经有很多应用程序的搜索功能是基于 Lucene ,比如 Eclipse 帮助系统的搜索功能。

Lucene 能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。

Solr VS LuceneSolr 与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene ,因为Solr 底层的核心技术是使用Apache Lucene 来实现的,简单的说Solr 是Lucene 的服务器化。

需要注意的是Solr 并不是简单的对Lucene 进行封装,它所提供的大部分功能都区别于Lucene 。

安装搭建Solr安装Java 虚拟机Solr 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成。

可以通过下面的地址下载所需JDK 或JRE :∙OpenJDK (/j2se/downloads.html)∙Sun (/j2se/downloads.html)∙IBM (/developerworks/java/jdk/)∙Oracle (/technology/products/jrockit/index.html)安装步骤请参考相应的帮助文档。

solr之~模糊查询

solr之~模糊查询

solr之~模糊查询有的时候,我们一开始不可能准确地知道搜索的关键字在Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询。

模糊匹配会在索引中对关键字进行非精确匹配。

例如,有的人可能想要搜索某个前缀开始的单词(称为通配符查询),或者想要查询和关键字有一两个字母不相同的单词(称为模糊查询或编辑距离查询),或者你想要查询两个关键字,并且这两个关键字之间的距离不会大于某个最大值(称为临近查询)。

总的说来,模糊匹配是查询中的一个强大的工具。

通配符查询在Solr 中最普遍使用的模糊查询就是使用通配符。

假设你想要查询以 offic 开始的文档。

下面列举出这个查询的几个版本:•查询语句: office OR officer OR official OR officiate OR … 这个列表中的单词是所有你以 offic 开头的单词。

因为你需要找到的所有匹配都在Solr 索引中。

因此,你可以使用星号(*)作为通配符来执行相同的功能:•查询语句: offi* 匹配 office, officer, official 等等。

除了放在关键字的最后,通配符也可以放到关键字中间,例如,如果你想要同时匹配 officer 和 offer:•查询语句: off*r 匹配 offer,officer,officiator 等。

星号通配符(*)表示匹配 0 个或多个字符。

如果你只需要匹配一个字符,那么可以使用问号(?)通配符:•查询语句: off?r 匹配 offer 但是不匹配 officer。

以通配符为头进行查询在Solr 中使用通配符相当强大。

但是,使用通配符进行查询也会带来很大的开销。

一旦使用统配符的查询,那么在关键字中第一个通配符之前的部分需要在反向索引中全部查询出来。

那后,每个查询出来的结果在逐一进行检查,看是否符合查询条件。

正是因为这样,所以在统配符之前的字符越多,那么查询将会越快。

例如,使用engineer* 进行查询将不会带来很高的开销(因为这个查询在反向索引中不会找到太多的匹配),但是 e* 进行查询的开销就相当大,它将会匹配所有 e 开头的单词。

solr使用手册

solr使用手册

solr使用手册Solr全文检索服务一、企业站内搜索技术选型在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。

1.使用Lucene实现?什么是Lucene ?Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。

Lucene目前是Apache Jakarta(雅加达) 家族中的一个开源项目。

也是目前最为流行的基于Java开源全文检索工具包。

目前已经有很多应用程序的搜索功能是基于Lucene ,比如Eclipse 帮助系统的搜索功能。

Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索●单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。

2.使用Google或Baidu接口?●通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用。

3.使用Solr实现? Solr是什么?Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。

Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。

Solr 搜索只需要发送HTTP GET 请求,然后对Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

非常经典的solr教程,照着上面做完全能成功!duogemajiaSolr 3.5 入门配置应用机器上已安装: Tomcat 6.0 jdk1.7 mysql 5.01 访问/dyn/closer.cgi/lucene/solr , 在这个网址里选择一个路径, 下载solr 3.5 的版本2 solr3.5 在本机解压缩以后, 把apache-solr-3.5.0\example\webapps 目录下的solr.war 文件拷贝到Tomcat 6.0 的webapps 目录下3 在Tomcat 6.0\webapps\solr 目录里新建一个文件夹conf4 把solr3.5 本机解压缩文件夹apache-solr-3.5.0\example 下的multicore 文件夹考本到Tomcat 6.0\webapps\solr\conf 目录下5 在Tomcat 6.0\conf\Catalina\localhost 目录下新建一个solr.xml 文件, 里面的内容如下<?xml version="1.0" encoding="UTF-8"?><Context docBase="${catalina.home}/webapps/solr.war" debug="0"crossContext="true" ><!-- 这里配置的是Solr 运行的Home 目录--><Environment name="solr/home" type="ng.String"value="${catalina.home}/webapps/solr/conf/multicore" override="true" /></Context>6 访问你的solr 项目localhost:8080/solr 会显示出两个core , solr 正常运行7 配置分词, 使用的是mmseg4j 和搜狗词库,下载地址:/p/mmseg4j/ , /p/mmseg4j/downloads/ detail?name=data.zip&can=2&q8 把本地下载的mmseg4j 解压缩, 把里面的mmseg4j-all-1.8.5.jar 文件拷贝到Tomcat 6.0\webapps\solr\WEB-INF\lib 目录下9 在Tomcat 6.0\webapps\solr 目录下新建一个dic 文件夹, 把新下载的词库拷贝到dic 目录下10 在\Tomcat 6.0\webapps\solr\conf\multicore\core0\conf\schema.xml 文件的types 节点里添加如下节点:<fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100"> <analyzer><tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"mode="complex" dicPath="E:/Program Files/Apache Software Foundation/Tomcat6.0/webapps/solr/dic"></tokenizer></analyzer></fieldtype><fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100"> <analyzer><tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"mode="maxword" dicPath="E:/Program Files/Apache Software Foundation/Tomcat6.0/webapps/solr/dic"></tokenizer></analyzer></fieldtype><fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100"> <analyzer><tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"mode="simple" dicPath="E:/Program Files/Apache Software Foundation/Tomcat6.0/webapps/solr/dic"></tokenizer></analyzer></fieldtype>11 在\Tomcat 6.0\webapps\solr\conf\multicore\core0\conf\schema.xml 文件的fields 节点里添加如下节点:<field name="simple" type="textSimple" indexed="true" stored="true"multiValued="true" /><field name="complex" type="textComplex" indexed="true" stored="true" multiValued="true" /><field name="text" type="textMaxWord" indexed="true" stored="true"multiValued="true" />12 因为solr3.5 里有两个core , 所以针对core1 重复10,11 两步13 对分词进行测试, 访问http://localhost:8180/solr/core0/admin/analysis.jsp?highlight=on13.1 Field[Name] 输入: complex13.2 Field Value(index) 输入: 中国银行第一分行, Field Value(index) 下面的verbose outpu 点选13.3 点击Analyze 按钮, 查看分词结果: 中国银行| 第一| 分行14 此时Solr3.5 已经可以进行分词, 接下来配置solr 3.5 连接mysql 数据库, 生成索引, 进行分词14.1 下载java 的mysql 驱动, 本机解压mysql-connector-java-5.1.18-bin.jar, 然后拷贝到Tomcat 6.0\webapps\solr\WEB-INF\lib 目录下14.2 在\Tomcat 6.0\webapps\solr 目录下新建db 文件夹14.3 在\Tomcat 6.0\webapps\solr\db 文件夹下面新建一个db-data-config.xml 文件, 内容如下:<dataConfig><dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/test" user="root" password="123" /><document name="messages"><entity name="message" transformer="ClobTransformer" query="select * fromtest1"><field column="ID" name="id" /><field column="Val" name="text" /></entity></document></dataConfig>url="jdbc:mysql://localhost:3306/test" user="root" password="123" 这里配置了mysql 的连接路径, 用户名, 密码<field column="ID" name="id" /><field column="Val" name="text" /> 这里配置的是数据库里要索引的字段, 注意name 是11 步配置的14.4 在Tomcat 6.0\webapps\solr\conf\multicore\core0\conf 目录下的solrconfig.xml 文件里, 添加如下代码:<requestHandler name="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">E:/Program Files/Apache Software Foundation/Tomcat6.0/webapps/solr/db/db-data-config.xml</str></lst></requestHandler>“E:/Program Files/Apache Software Foundation/Tomcat6.0/webapps/solr/db/db-data-config.xml” 是14.3 配置文件的绝对路径14.5 在Tomcat 6.0\webapps\solr\conf\multicore\core1\conf\solrconfig.xml 路径里重复14.414.6 把本地下载解压的solr3.5 文件里, dist 目录下的apache-solr-dataimporthandler-3.5.0.jar 和apache-solr-dataimporthandler-extras-3.5.0.jar Tomcat6.0\webapps\solr\WEB-INF\lib 目录下14.7 solr3.5 连接mysql 已经配置完成, 测试读取mysql 生成索引, 访问: http://localhost:8180/solr/core0/dataimport?command=full-import14.8 测试分词查询, 访问http://localhost:8180/solr/core0/admin/ 查询数据库里索引列里有的词注意, 这仅仅是配置solr3.5 连接mysql 生成索引, 可以执行正常词语的查询, 但是不能执行对搜索短语的分词查询multicore 目录下面多个core 文件夹, 每一个都是一个接口, 有独立的配置文件, 处理某一类数据。

相关文档
最新文档