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更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
example:solr工程的例子目录:
l example/solr:
该目录是一个标准的SolrHome,它包含一个默认的SolrCore
l example/multicore:
该目录包含了在Solr的multicore中设置的多个Core目录。
l example/webapps:
该目录中包括一个solr.war,该war可作为solr的运行实例工程。
licenses:solr相关的一些许可信息
在solr解压包下solr-4.10.3\example\solr文件夹就是一个标准的SolrHome,只需要将它复制到指定的目录下即可,该SolrHome中默认有个名称为collection1的SolrCore。
其实就是配置SolrCore目录下的conf/solrconfig.xml。
这个文件是来配置SolrCore实例的相关运行时信息。如果使用默认配置可以不用做任何修改。该配置文件中包含了不少标签,但是我们经常使用的标签有:lib标签、datadir标签、requestHandler标签。
通过/update维护索引,可以完成索引的添加、修改、删除操作。
通过/select搜索索引。
设置搜索参数完成搜索,搜索参数也可以设置一些默认值,如下:
explicit
10
json
text
solr/home
F:\solr
java.lang.String
通过/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。
通过此菜单可以创建索引、更新索引、删除索引等操作,界面如下:
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();
}
}