热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

一、使用背景几乎在每个项目中都会频繁使用搜索功能,并且数据量很大,如果仍然采用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:高亮后缀





推荐阅读
author-avatar
亚丶喃7_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有