搜索服务应用:solr的使用

本文详细介绍了如何在Solr 4.10.3环境下进行部署与配置,包括环境搭建、中文分词器配置、数据库数据同步到Solr的过程,以及Solr配置文件的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始前

环境:solr4.10.3,jdk1.7,tomcat7

下载地址:http://archive.apache.org/dist/lucene/solr/

说明:solr和lucen更新是同步的,请配对使用,lucene用什么版本solr就用什么版本

将下载的zip解压,solr本身集成了jetty服务器,可以直接启动

cmd命令启动

然后直接访问:http://127.0.0.1:8983/solr

配置

1,solr的配置

solrHome是solr服务运行的主目录,一个SolrHome目录中包含多个solrcore,而solrcore包含solr的配置文件和数据

一般一个solrcore里面配置了一个项目的数据库数据

1,建立一个work,作为solrHome的根目录

2,将解压的solr4.10.3\example\solr,复制到work中,并改名为solrHome

3,最终可以看到一个默认的solrcore

4,配置work\solrhome\collection1\conf\solrconfig.xml文件

lib标签:引用拓展的jar包,例如后面会使用到数据库的驱动包。方便管理你可以使用时先将jar包放在指定的目录,再加载路径

datadir标签:配置solrcore的data目录,data目录用来存放solrcore的索引文件和tlo日志文件,solr.data.dir表示${SolrCore}/data的目录位置。已经配置好,一般不用修改

 

requesthandler标签:requesthandler请求处理器,定义了索引和搜索的访问方式

通过/updat维护索引,可以完成索引的添加、删除、修改操作:

 

/select,当然就是查询了:

 

参数说明:

<requestHandler name="/select" class="solr.SearchHandler">
<!-- 设置默认的参数值,可以在请求地址中修改这些参数-->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int><!--显示数量-->
<str name="wt">json</str><!--显示格式-->
<str name="df">text</str><!--默认搜索字段-->
</lst>
</requestHandler>

2,tomcat配置

tomcat与work同级目录,自行配置tomcat的端口,不冲突就好

1,将solr.war文件拷贝到tomcat的webapps下,解压war,得到的文件夹保留,然后删了war

2,把solr解压包下solr-4.10.3\example\lib\ext目录下的所有jar包拷贝到Tomcat部署solr的WEB-INF/lib文件夹

3,把solr解压包下solr-4.10.3\example\resources\log4j.properties文件,复制到Tomcat的webapps下,solr中的WEB-INF\classes目录下(如果没有classes目录,创建一个

4,修改web.xml,让Tomcat使用JNDI的方式告诉solr服务器SolrHome位置

5,启动tomcat 即可

部署一个项目的数据

1,配置中文分词器

分词器Github:https://github.com/magese/ik-analyzer-solr7,里面有下面两个1、2步骤的jar包及文件

1,在solrconfig.xml(work\solrhome\collection1\conf\solrconfig.xml)中加载中文分词器的jar包

2,将以下文件放到tomcat solr项目中的classes文件夹中

2,scheme.xml文件

1,配置IK分词器的域类型

<fieldType name="text_ik" class="solr.TextField">
      <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"></analyzer>
 </fieldType>

 2,然后使用ik分词器

3,重新启动tomcat,分词器已生效 

3,同步关系数据库中的数据到solr 

1,配置数据库字段,同样在scheme.xml文件。

solr唯一约束:id

其他字段

 

4,配置导入数据的请求处理器,数据库驱动包

1,上面配置solrConfig.xml说到的lib加载标签

 

 

5,配置数据导入处理器,导入数据库数据,加载数据库配置文件

 

6,新建data-config.xml,与solrconfig同级

 

7,启动tomcat

1,如果solrcore是复制过来的,那么数据可能会有残留,刚开始可以先删除索引库,选择xml。此步骤是删除索引库,谨慎操作

 

 

2,导入要使用的数据。其实就是执行上面data-config的内容

3,点击刷新状态,成功

solr的配置就到这里了。下面是java代码的使用

8,数据的检索 

1,将httpsolrserver

 

2,查询全部的索引库数据 

1 概述 4 1.1 企业搜索引擎方案选型 4 1.2 Solr的特性 4 1.2.1 Solr使用Lucene并且进行了扩展 4 1.2.2 Schema(模式) 5 1.2.3 查询 5 1.2.4 核心 5 1.2.5 缓存 5 1.2.6 复制 6 1.2.7 管理接口 6 1.3 Solr服务原理 6 1.3.1 索引 6 1.3.2 搜索 7 1.4 源码结构 8 1.4.1 目录结构说明 8 1.4.2 Solr home说明 9 1.4.3 solr的各包的说明 10 1.5 版本说明 11 1.5.1 1.3版本 11 1.5.2 1.4版本 12 1.6 分布式和复制 Solr 架构 13 2 Solr的安装与配置 13 2.1 在Tomcat下Solr安装 13 2.1.1 安装准备 13 2.1.2 安装过程 14 2.1.3 验证安装 15 2.2 中文分词配置 15 2.2.1 mmseg4j 15 2.2.2 paoding 19 2.3 多核(MultiCore)配置 22 2.3.1 MultiCore的配置方法 22 2.3.2 为何使用多core ? 23 2.4 配置文件说明 23 2.4.1 schema.xml 24 2.4.2 solrconfig.xml 25 3 Solr应用 29 3.1 SOLR应用概述 29 3.1.1 Solr应用模式 29 3.1.2 SOLR使用过程说明 30 3.2 一个简单的例子 30 3.2.1 Solr Schema 设计 30 3.2.2 构建索引 30 3.2.3 搜索测试 31 3.3 搜索引擎的规划设计 32 3.3.1 定义业务模型 32 3.3.2 定制索引服务 34 3.3.3 定制搜索服务 34 3.4 搜索引擎配置 34 3.4.1 Solr Schema 设计(如何定制索引的结构?) 34 3.5 如何进行索引操作? 36 3.5.1 基本索引操作 36 3.5.2 批量索引操作 37 3.6 如何进行搜索 39 3.6.1 搜索语法 39 3.6.2 排序 42 3.6.3 字段增加权重 42 3.6.4 Solr分词器、过滤器、分析器 42 3.6.5 Solr高亮使用 46 4 SolrJ的用法 46 4.1 搜索接口的调用实例 46 4.2 Solrj的使用说明 47 4.2.1 Adding Data to Solr 47 4.2.2 Directly adding POJOs to Solr 49 4.2.3 Reading Data from Solr 51 4.3 创建查询 51 4.4 使用 SolrJ 创建索引 52 4.5 Solrj包的结构说明 53 4.5.1 CommonsHttpSolrServer 53 4.5.2 Setting XMLResponseParser 53 4.5.3 Changing other Connection Settings 53 4.5.4 EmbeddedSolrServer 54 5 Solr的实际应用测试报告 54 5.1 线下压力测试报告 54 5.2 线上环境运行报告 54 6 solr性能调优 55 6.1 Schema Design Considerations 55 6.1.1 indexed fields 55 6.1.2 stored fields 55 6.2 Configuration Considerations 55 6.2.1 mergeFactor 55 6.2.2 mergeFactor Tradeoffs 56 6.3 Cache autoWarm Count Considerations 56 6.4 Cache hit rate(缓存命中率) 56 6.5 Explicit Warming of Sort Fields 56 6.6 Optimization Considerations 56 6.7 Updates and Commit Frequency Tradeoffs 56 6.8 Query Response Compression 57 6.9 Embedded vs HTTP Post 57 6.10 RAM Usage Considerations(内存方面的考虑) 57 6.10.1 OutOfMemoryErrors 57 6.10.2 Memory allocated to the Java VM 57 7 FAQ 58 7.1 出现乱码或者查不到结果的排查方法: 58
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值