和solr的N天N夜(一)--solr的安装、配置、添加core、后台功能介绍

一、使用背景

几乎在每个项目中都会频繁使用搜索功能,并且数据量很大,如果仍然采用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文件。
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>D:\Java\solr</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
打开以上备注是的配置,并修改<env-entry-value>并配置为个刚才的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 <corename>生成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

 

删除所有文档:

<delete>

<query>*:*</query>

</delete>

<commit/>

 

删除指定id的文档:

<delete>

<query>id:change.me</query>

</delete>

<commit/>


3:Query

查询索引库,查询语法采用json格式

Q:查询条件

Fq:过滤条件,查询语句和查询的语法完全相同。可以设置多个过滤条件
sort:排序条件

start, rows:分页条件。Start起始记录,rows每页显示的记录数。

Fl:返回结果中域的列表

Df:默认搜索域

Hl:高亮显示

Hl.fl:高亮显示的域

Hl.simple.pre:高亮前缀

Hl.simple.post:高亮后缀




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值