全文搜索技术——Solr与solrj使用教程
2017-05-13 16:42
447 查看
solr详细配置与使用教程:点击下载
总结一下solrj的使用完整源码下载地址:点击下载
Solr使用指南可参考:https://wiki.apache.org/solr/FrontPage。
bin:solr的运行脚本
contrib:solr的一些软件/插件,用于增强solr的功能。
dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
docs:solr的API文档
example:solr工程的例子目录:
l example/solr:
该目录是一个包含了默认配置信息的Solr的Core目录。
l example/multicore:
该目录包含了在Solr的multicore中设置的多个Core目录。
l example/webapps:
该目录中包括一个solr.war,该war可作为solr的运行实例工程。
licenses:solr相关的一些许可信息
Solr:Solr4.10.3
Jdk:jdk1.7.0_72
Tomcat:apache-tomcat-7.0.53
第二步:把solr的war包复制到tomcat的webapp目录下。
把\solr-4.10.3\dist\solr-4.10.3.war复制到D:\temp\apache-tomcat-7.0.53\webapps下。
改名为solr.war
第三步:solr.war解压。使用压缩工具解压或者启动tomcat自动解压。解压之后删除solr.war
第四步:把\solr-4.10.3\example\lib\ext目录下的所有的jar包添加到solr工程的WEB-INF\lib中
第五步:配置solrHome和solrCore。
1)创建一个solrhome(存放solr所有配置文件的一个文件夹)。\solr-4.10.3\example\solr目录就是一个标准的solrhome。
2)把\solr-4.10.3\example\solr文件夹复制到D:\temp\0108路径下,改名为solrhome,改名不是必须的,是为了便于理解。
3)在solrhome下有一个文件夹叫做collection1这就是一个solrcore。就是一个solr的实例。一个solrcore相当于mysql中一个数据库。Solrcore之间是相互隔离。
i. 在solrcore中有一个文件夹叫做conf,包含了索引solr实例的配置信息。
ii. 在conf文件夹下有一个solrconfig.xml。配置实例的相关信息。如果使用默认配置可以不用做任何修改。
Xml的配置信息:
Lib:solr服务依赖的扩展包,默认的路径是collection1\lib文件夹,如果没有
就创建一个
dataDir:配置了索引库的存放路径。默认路径是collection1\data文件夹,如果data文件夹,会自动创建。
requestHandler:
第六步:告诉solr服务器配置文件也就是solrHome的位置。修改web.xml使用jndi的方式告诉solr服务器。
Solr/home名称必须是固定的。
第七步:启动tomcat
第八步:访问http://localhost:8080/solr/
===============================================
不明白详细参考博客
总结一下solrj的使用完整源码下载地址:点击下载
1. Solr安装及配置
1.1. Solr的下载
从Solr官方网站(http://lucene.apache.org/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip。Solr使用指南可参考:https://wiki.apache.org/solr/FrontPage。
1.2. Solr的文件夹结构
将solr-4.10.3.zip解压:bin:solr的运行脚本
contrib:solr的一些软件/插件,用于增强solr的功能。
dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
docs:solr的API文档
example:solr工程的例子目录:
l example/solr:
该目录是一个包含了默认配置信息的Solr的Core目录。
l example/multicore:
该目录包含了在Solr的multicore中设置的多个Core目录。
l example/webapps:
该目录中包括一个solr.war,该war可作为solr的运行实例工程。
licenses:solr相关的一些许可信息
1.3. 运行环境
solr 需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默认提供Jetty(java写的Servlet容器),本教程使用Tocmat作为Servlet容器,环境如下:Solr:Solr4.10.3
Jdk:jdk1.7.0_72
Tomcat:apache-tomcat-7.0.53
1.1.1. 整合步骤
第一步:安装tomcat。D:\temp\apache-tomcat-7.0.53第二步:把solr的war包复制到tomcat的webapp目录下。
把\solr-4.10.3\dist\solr-4.10.3.war复制到D:\temp\apache-tomcat-7.0.53\webapps下。
改名为solr.war
第三步:solr.war解压。使用压缩工具解压或者启动tomcat自动解压。解压之后删除solr.war
第四步:把\solr-4.10.3\example\lib\ext目录下的所有的jar包添加到solr工程的WEB-INF\lib中
第五步:配置solrHome和solrCore。
1)创建一个solrhome(存放solr所有配置文件的一个文件夹)。\solr-4.10.3\example\solr目录就是一个标准的solrhome。
2)把\solr-4.10.3\example\solr文件夹复制到D:\temp\0108路径下,改名为solrhome,改名不是必须的,是为了便于理解。
3)在solrhome下有一个文件夹叫做collection1这就是一个solrcore。就是一个solr的实例。一个solrcore相当于mysql中一个数据库。Solrcore之间是相互隔离。
i. 在solrcore中有一个文件夹叫做conf,包含了索引solr实例的配置信息。
ii. 在conf文件夹下有一个solrconfig.xml。配置实例的相关信息。如果使用默认配置可以不用做任何修改。
Xml的配置信息:
Lib:solr服务依赖的扩展包,默认的路径是collection1\lib文件夹,如果没有
就创建一个
dataDir:配置了索引库的存放路径。默认路径是collection1\data文件夹,如果data文件夹,会自动创建。
requestHandler:
第六步:告诉solr服务器配置文件也就是solrHome的位置。修改web.xml使用jndi的方式告诉solr服务器。
Solr/home名称必须是固定的。
第七步:启动tomcat
第八步:访问http://localhost:8080/solr/
package cn.itcast.solr; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.common.SolrInputDocument; import org.junit.Test; public class IndexManagerTest { @Test public void testIndexCreate() throws Exception{ //创建和Solr服务端连接 SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr"); //创建solr文档对象 SolrInputDocument doc = new SolrInputDocument(); //域要先定义后使用,还有注意必须要有id主键域 //solr中没有专用的修改方法, 会自动根据id进行查找,如果找到了则删除原来的将新的加入就是修改,如果没找到,将新的直接加入则就是新增 doc.addField("id", "a001"); doc.addField("product_name", "台灯1`111"); doc.addField("product_price", "12.5"); //将文档加入solrServer对象中 solrServer.add(doc); //提交 solrServer.commit(); } @Test public void testIndexDel() throws Exception{ //创建和Solr服务端连接 SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr"); //根据主键id进行删除 //solrServer.deleteById("a001"); //根据查询删除,这里是删除所有*:* solrServer.deleteByQuery("*:*"); //提交 solrServer.commit(); } }
===============================================
package cn.itcast.solr; import java.util.List; import java.util.Map; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrQuery.ORDER; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.junit.Test; public class IndexSearchTest { @Test public void testIndexSearch1() throws Exception{ //连接solr服务端 SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr"); //创建solr查询条件对象 SolrQuery solrQuery = new SolrQuery(); //查询所有 solrQuery.setQuery("*:*"); //查询并获取查询响应对象 QueryResponse queryResponse = solrServer.query(solrQuery); //从查询响应中获取查询结果集对象 SolrDocumentList results = queryResponse.getResults(); //打印一共查询到多少条记录,也就是记录总数 System.out.println("=====count====" + results.getNumFound()); //遍历查询结果集 for(SolrDocument doc : results){ System.out.println("============="+doc.get("id")); System.out.println("============="+doc.get("product_name")); System.out.println("============="+doc.get("product_price")); System.out.println("===================================================="); } } @Test public void testIndexSearch2() throws Exception{ //连接solr服务端 SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr"); //创建solr查询条件对象 SolrQuery solrQuery = new SolrQuery(); //查询关键字输入 solrQuery.setQuery("台灯"); //设置默认搜索域 solrQuery.set("df", "product_keywords"); //设置过滤查询 solrQuery.addFilterQuery("product_price:[1 TO 100]"); //设置排序,这里是降序 solrQuery.setSort("product_price", ORDER.desc); //=======设置分页======== //设置起始条数 solrQuery.setStart(0); //设置查询多少条 solrQuery.setRows(50); //========设置高亮显示======= //高亮默认是关闭的,所以要手动开启 solrQuery.setHighlight(true); //设置需要高亮显示的域 solrQuery.addHighlightField("product_name"); //设置高亮前缀 solrQuery.setHighlightSimplePre("<span style=\"color:red\">"); //设置高亮后缀 solrQuery.setHighlightSimplePost("</span>"); //===================查询并获取查询响应对象===================================== QueryResponse queryResponse = solrServer.query(solrQuery); //从查询响应中获取查询结果集对象 SolrDocumentList results = queryResponse.getResults(); //打印一共查询到多少条记录,也就是记录总数 System.out.println("=====count====" + results.getNumFound()); //遍历查询结果集 for(SolrDocument doc : results){ System.out.println("============="+doc.get("id")); //获取高亮 Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting(); List<String> list = highlighting.get(doc.get("id")).get("product_name"); if(list != null && list.size() > 0){ String hlName = list.get(0); System.out.println("=======high lighting=====" + hlName); } System.out.println("============="+doc.get("product_name")); System.out.println("============="+doc.get("product_price")); System.out.println("===================================================="); } } }
不明白详细参考博客
相关文章推荐
- 搜索学习--Solr全文搜索服务器的基本使用(一)——SolrJ的使用
- 使用lucene solr搭建Oracle数据库全文搜索服务
- Solr JAVA客户端SolrJ 4.9使用示例教程
- Solr4.0的Tomcat部署及Solrj的简单使用教程
- 使用Solr快速实现Django的全文搜索[转]
- 全文搜索技术——Solr
- 企业级搜索应用服务器Solr4.10.4部署开发详解(3)- Solr使用-使用java客户端solrj进行增删改查开发
- 【备忘】【No10】全文搜索 SOLR资料 从基础到高级 视频教程
- 全文搜索服务器solr之客户端 - solrj二次开发
- 全文搜索服务器solr之客户端 - solrj二次开发
- 全文搜索 SOLR资料 从基础到高级 视频教程
- Solr(二)——Java使用solr全文搜索
- 如何搭建solr、使用全文搜索
- 框架 day80 涛涛商城项目-redis安装单机版solr,搭建搜索服务层,solrJ使用
- Solr JAVA客户端SolrJ 4.9使用示例教程
- Solr JAVA客户端SolrJ 4.9使用示例教程
- SOLR企业搜索平台 三 (schema.xml配置和solrj的使用)
- 搜索学习--Solr全文搜索服务器的基本使用(二)——Spring Data Solr的使用
- 全文搜索服务器solr之客户端 - solrj二次开发
- 使用hubble.net实施全文搜索笔记