Solr笔记(一)

简介

Solr是一个独立的企业级搜索应用服务器,它对外提供类似Web-service的API接口。

用户可以通过HTTP的POST请求,向Solr服务器提交一定格式的XML或者JSON文件,Solr服务器解析文件之后,根据具体需求对索引库执行增删改操作

用户可以通过HTTP的GET请求,向Solr服务器发送搜索请求,并得到XML/JSON格式的返回结果。

Solr是Apache下的一个顶级开源项目,采用java开发,基于Lucene。Solr可以独立运行在Jetty(java开发的,轻量级的)、Tomcat等这些Servlet容器中。

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

solr和Lucene区别

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

Solr的目标是打造一款企业级的搜索引擎系统,它是基于Lucene一个搜索引擎服务器,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。

solr目录详解

Solr笔记(一)_第1张图片

bin:solr的运行脚本
contrib:solr扩展jar包,用于增强solr的功能
dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件
docs:solr的API文件

example:solr工程的例子目录:

example/solr

       该目录是一个标准的SolrHome,它包含一个默认的SolrCore

l example/multicore:

       该目录包含了在Solr的multicore中设置的多个Core目录。

example/webapps

    该目录中包括一个solr.war,该war可作为solr的运行实例工程。

licenses:solr相关的一些许可信息


solrHome和solrCore

solrHome是Solr服务器运行的主目录,该目录中包括了多个SolrCore目录
solrCore是collection1目录,该目录中包含搜索和索引时需要的配置文件和数据文件(比如索引库文件),每个solrCore都可以提供单独的搜索和索引服务
Solr笔记(一)_第2张图片

SolrCore目录:
Solr笔记(一)_第3张图片

在solr解压包下solr-4.10.3\example\solr文件夹就是一个标准的SolrHome,只需要将它复制到指定的目录下即可,该SolrHome中默认有个名称为collection1的SolrCore。

配置SolrCore

其实就是配置SolrCore目录下的conf/solrconfig.xml。

这个文件是来配置SolrCore实例的相关运行时信息。如果使用默认配置可以不用做任何修改。该配置文件中包含了不少标签,但是我们经常使用的标签有:lib标签、datadir标签、requestHandler标签

lib标签

lib标签可以配置扩展功能的一些jar,用以增强solr本身没有的功能。

比如solr自身没有『数据导入索引库』功能,如果需要使用,则首先要把这些jar复制到指定的目录,然后通过该配置文件进行相关配置

datadir标签

dataDir数据目录data。data目录用来存放索引文件和tlog日志文件。

requestHandler标签

requestHandler请求处理器,定义了索引和搜索的访问方式。

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


通过/select搜索索引。


设置搜索参数完成搜索,搜索参数也可以设置一些默认值,如下:


    
    
        explicit
        10
        json
        text
    	


找到solr.war,放到tomcat的webapps下,然后打开配置文件web.xml,配置solr包里面的SolrHome
    
       solr/home
       F:\solr
       java.lang.String
    

注意把ext扩展包也导入,一共50个包。运行tomcat
Solr笔记(一)_第4张图片


管理界面功能介绍

Dashboard

仪表盘,显示了该Solr实例开始启动运行的时间、版本、系统资源等信息


Logging

Solr运行日志信息


Cloud

SolrCloud,Solr云(集群),当使用Solr Colud模式运行时会显示此菜单。

Core Admin

Solr Core管理界面,在这里可以添加SolrCore实例,不过浏览器端有bug,不推荐使用

java properties

Solr在jvm运行环境中的属性信息,类路径,文件编码啊啥的。

Thead Dump

显示Solr Server中当前活跃线程信息,同时也可以跟踪线程运行栈信息。

Core selector

选择一个SolrCore进行详细操作
Solr笔记(一)_第5张图片

Analysis

通过此界面可以测试索引分析器和搜索分析器的执行情况

dataimport

可以定义数据导入处理器,从关系数据库将数据导入到solr索引库,默认是没配置的,需要手动配置


Document

通过/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。

 

通过此菜单可以创建索引、更新索引、删除索引等操作,界面如下:

Solr笔记(一)_第6张图片
overwrite="true" : solr在做索引的时候,如果文档已经存在,就用xml中的文档进行替换
commitWithin="1000" : solr 在做索引的时候,每隔1000(1秒)毫秒,做一次文档提交。为了方便测试也可以在Document中立即提交,后添加“


query

t通过/select执行搜索索引,必须指定“q”查询条件
Solr笔记(一)_第7张图片

Solrj

什么是Solrj
Solrj是访问solr服务的java客户端,提供索引和搜索的API方法
Solr笔记(一)_第8张图片

public class CreateIndexTest {
	// solr服务器的基础URL路径
	private String baseURL = "http://localhost:8080/solr/";
	// HttpSolrServer对象,该对象负责与远程的solr服务器进行交互
	private HttpSolrServer solrServer = new HttpSolrServer(baseURL);

	@Test
	public void testCreateAndUpdateIndex() throws Exception {

		SolrInputDocument doc = new SolrInputDocument();

		doc.addField("id", "c001");
		doc.addField("content", "测试solrj添加操作02");
		// 调用SolrServer的API完成索引库的增删改查操作
		solrServer.add(doc);

		// 提交
		solrServer.commit();
	}

	@Test
	public void testDeleteIndex() throws Exception {
		// 根据ID删除
		// solrServer.deleteById("c001");

		// 根据查询对象删除
		solrServer.deleteByQuery("id:change.me");

		// 删除所有
		solrServer.deleteByQuery("*:*");

		// 提交
		solrServer.commit();
	}
}


你可能感兴趣的:(solr,Solr)