Solr介绍
Solr是apache下的一个开源项目。采用Java开发。它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现可配置,可扩展,并对索引,搜索性能进行了优化。
Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
Solr的安装
前期准备:
①先下载。Solr下载地址: http://archive.apache.org/dist/lucene/solr/
②安装Solr与Tomcat集成:比如为 Linux环境CentOS6.4、 Tomcat7.0、 Solr4.10.3
安装步骤:
①解压Solr: tar -zxvf solr-4. 10.3.tgz.tar
②进入目录: cd solr-4.10.3/example/webapps/
③拷贝其下war文件到tomcat的webapps中: cp solr.war /usr/local/apache-tomcat-7.0.29/webapps/
④解压Solr: mkdir solr && unzip solr.war -d solr && m -rf solr.war
⑤修改解压好的solr文件夹,修改其文件: vim solr/WEB-INF/web.xml, 查找到nv-entry内容,解开注释文本。并修改solr/home 的地址: /usr/local/solr-4. 10.3/example/solr.保存并退出即可。|
⑥拷贝相关jar包到tomcat下: cd /usr/local/solr-4.10.3/example/lib/ext && cp */usr/local/apache-tomcat-7 .0.29/1ib/
⑦启动tomcat即可: /usr/local/apache-tomcat-7.0.29/bin/startup.sh
⑧查看日志: tail -500 /usr/local/apache-tomcat-7 .0.29/logs/catalina.out
⑨通过浏览器访问: http://地址:8080/solr, 看到solr主页即可。
下面是该页面的一些简单介绍
使用java测试类solr索引操作
public class SolrManager {
/**
* 添加
* @throws Exception
* @throws IOException
*/
@Test
public void addIndex() throws Exception, IOException{
// 1、获取solr的服务器 用于连接solr项目
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
// 2、执行solrServer的添加方法
SolrInputDocument doc = new SolrInputDocument();
doc.addField("name", "solrJ添加name");
doc.addField("content", "solrJ添加的内容");
doc.addField("id", "2");
solrServer.add(doc);
solrServer.commit();
}
/**
* 修改
* @throws Exception
* @throws IOException
*/
@Test
public void updateIndex() throws Exception, IOException{
// 1、获取solr的服务器 用于连接solr项目
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
// 2、执行solrServer的添加方法
SolrInputDocument doc = new SolrInputDocument();
doc.addField("name", "solrJ添加name修改");
doc.addField("content", "solrJ添加的内容修改");
doc.addField("id", "2");
solrServer.add(doc);
solrServer.commit();
}
/**
* 删除
* @throws Exception
* @throws IOException
*/
@Test
public void deleteIndex() throws Exception, IOException{
// 1、获取solr的服务器 用于连接solr项目
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
// solrServer.deleteById("1");
// solrServer.deleteByQuery("id:2");
solrServer.deleteByQuery("*:*");
solrServer.commit();
}
@Test
public void searchIndex() throws Exception, IOException{
// 1、获取solr的服务器 用于连接solr项目
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/collection1");
// 2、设置查询条件
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("*:*");
// 3、执行
QueryResponse queryResponse = solrServer.query(solrQuery);
// 4、获取结果
SolrDocumentList results = queryResponse.getResults();
System.out.println("总记录数:"+results.getNumFound());
for (SolrDocument doc : results) {
System.out.println(doc.get("id"));
System.out.println(doc.get("name"));
System.out.println(doc.get("content"));
}
}
}