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目录详解



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都可以提供单独的搜索和索引服务


SolrCore目录:


在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搜索索引。


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

<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>

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

注意把ext扩展包也导入,一共50个包。运行tomcat


管理界面功能介绍

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进行详细操作

Analysis

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

dataimport

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


Document

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

 

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


overwrite="true" : solr在做索引的时候,如果文档已经存在,就用xml中的文档进行替换
commitWithin="1000" : solr 在做索引的时候,每隔1000(1秒)毫秒,做一次文档提交。为了方便测试也可以在Document中立即提交,</doc>后添加“<commit/>”


query

t通过/select执行搜索索引,必须指定“q”查询条件

Solrj

什么是Solrj
Solrj是访问solr服务的java客户端,提供索引和搜索的API方法


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();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LawsonJin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值