作者:亚丶喃7_789 | 来源:互联网 | 2023-05-18 23:09
一、使用背景几乎在每个项目中都会频繁使用搜索功能,并且数据量很大,如果仍然采用outofdate的SQL语句查询数据库的方式,个人觉得不仅会增加服务器的负担,也会觉得这种方式略显
一、使用背景
几乎在每个项目中都会频繁使用搜索功能,并且数据量很大,如果仍然采用out of date的SQL语句查询数据库的方式,个人觉得不仅会增加服务器的负担,也会觉得这种方式略显土气,跟不上IT屌丝们的滚滚潮流~OK,废话不多说,Let's move...
二、solr简介
Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
Solr可以独立运行,运行在Jetty、Tom猫等这些容器中,Solr索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档,Solr根据xml文档添加、删除、更新索引。Solr搜索只需发送HTTP POST请求,然后对Solr返回Xml、json等格式的查询结果进行解析,组织页面布局即可。
Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
三、运行环境
jdk:1.7.0_17
tomcat:7.0.22
solr:5.4.1
四、solr和tomcat集成
1、安装jdk、tomcat
2、解压solr
3、把D:\Java\solr-5.4.1\server\solr-webapp\webapp文件夹放到tomcat下webapp目录下。改名为solr。改名不是必须的,为了方便访问。
4、把D:\Java\solr-5.4.1\server\lib\ext目录下的所有的jar包添加到solr工程中。D:\Java\apache-tomcat-7.0.22\webapps\solr\WEB-INF\lib
5、创建一个solrhome(solr所有配置文件存放的目录)。
把sorl文件夹复制到其他路径下,改名为solrhome或者其他名称,改名的目的是为了便于理解。
6、告诉sorl服务器solrhome的位置,修改solr工程的web.xml文件。
solr/home
D:\Java\solr
java.lang.String
打开以上备注是的配置,并修改
并配置为个刚才的solrhome
7、启动tomcat,访问http://localhost:8080/solr
出现该页面,则集成成功!
五、添加core
在solr 5.4中添加core的是通过命令行的方式进行添加。具体内容点击此处查看文档。进入D:\Java\solr-5.4.1\bin目录运行:solr start命令,启动solr实例,默认是已8983端口启动。可以通过solr status命令查询solr状态,具体内容请往下看↓
运行命令:solr create -c 生成core。生成core所在目录为上图中的solr_home。将刚才用命令生成的core拷贝到上面配置的solrhome目录下,这样当solr工程启动以后才能加载到该core。
启动tomcat,此时就能看到所添加的core。
在这里运行query查询document有点小蛋疼的问题。因为solr 5.4有2个管理页面一个测试页面index.html,一个admin.html,在index.html的页面操作会报错,在admin.html中操作就没问题。
五、后台功能介绍
1、 Analyzer
查看当前索引库中的字段列表,及分词效果。
域、字段列表:所有的域都是定义在schema.xml配置文件中。在solr中域必须是先定义后使用。
如果想修改域的定义及自定义域需要修改schema.xml。
2、Documents
索引库的维护功能。可以对索引库进行增删改操作。在索引库中一条记录就是一个Document。
1):添加document
1、在solr中一条记录就是一个文档。
2、文档可以使用json数据格式描述:key就是域名(字段名),value:值。
3、在solr中每个文档必须有一个id域。类似于关系型数据库中表的主键。必须有且不能重复。
4、域必须先定义后使用。必须在schema.xml中定义。
2):更新document
添加一个新的文档如果id存在会想把id对应的文档删除,然后再添加以新的。先删除后添加。
3):删除document
a):根据id删除
b):根据查询删除
*:*:匹配所有文档。
域名:关键字
例如:id:change.me
删除所有文档:
*:*
删除指定id的文档:
id:change.me
3:Query
查询索引库,查询语法采用json格式
Q:查询条件
Fq:过滤条件,查询语句和查询的语法完全相同。可以设置多个过滤条件
sort:排序条件
start, rows:分页条件。Start起始记录,rows每页显示的记录数。
Fl:返回结果中域的列表
Df:默认搜索域
Hl:高亮显示
Hl.fl:高亮显示的域
Hl.simple.pre:高亮前缀
Hl.simple.post:高亮后缀