初识Solr(一):Solr安装,搭建搜索引擎
2017-02-03 22:50
309 查看
一、solr介绍
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务
solr.war包是一个java web程序,需要运行在tomcat中
二、安装步骤
1. 安装jdk + tomcat2. 在/usr/local创建一个solr目录
3. 解压solr压缩包
4. 把solr-4.10.3/dist/solr-4.10.3.war包部署到tomcat下,并改名为solr.war
cp solr-4.10.3/dist/solr4.10.3.war/ usr/local/solr/tomcat/webapps/solr.war
5. 把/solr-4.10.3/example/lib/ext 目录下所有的jar包复制到solr工程中
cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
6. 创建solrhome。Solrhome是存放solr服务器所有配置文件的目录
在example文件夹内,把solr文件夹复制到/usr/local/solr/solrhome
[root@localhost example]# pwd
/home/ftp-userliu/solr-4.10.3/example
[root@localhost example]# cp -r solr /usr/local/solr/solrhome
7. 需要修改solr工程的web.xml文件。(实际配置的是JNDI),目的是告诉solr,solrhome的位置
cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/
vim web.xml
8. 启动tomcat
地址栏输入:http://192.168.172.129:8080/solr/#/
三、配置业务字段
(1)中文分析器的配置
1. 使用IK-Analyzer。把分析器的文件夹上传到服务器2. 把分析器的jar包添加到solr工程中
cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
3. 把IKAnalyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath
cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
注意:扩展词典及停用词词典的字符集必须是utf-8。不能使用windows记事本编辑
4. 配置fieldType。需要在solrhome/collection1/conf/schema.xml中配置
在末尾加上:
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
这里一定要用TextField,因为它能分词。(分词:我真的不喜欢你 ——> 我,真的,不,喜欢,你)
(2)配置业务字段
业务字段判断标准:1、在搜索时是否需要在此字段上进行搜索。例如:商品名称、商品的卖点、商品的描述
2、后续的业务是否需要用到此字段。例如:商品id
假设现在需要如下字段:
1、商品id
2、商品title
3、卖点
4、价格
5、商品图片
6、商品分类名称
7、商品描述
则需要在schema.xml配置:
<field name="item_title" type="text_ik" indexed="true" stored="true"/> <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/> <field name="item_price" type="long" indexed="true" stored="true"/> <field name="item_image" type="string" indexed="false" stored="true" /> <field name="item_category_name" type="string" indexed="true" stored="true" /> <field name="item_desc" type="text_ik" indexed="true" stored="false" />(商品描述用作搜索,不需要表现给用户,因此stored=”false”) <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>(复制域,好处,将我们需要搜索的字段放在一个域中,有利于提高效率) <copyField source="item_title" dest="item_keywords"/> <copyField source="item_sell_point" dest="item_keywords"/> <copyField source="item_category_name" dest="item_keywords"/> <copyField source="item_desc" dest="item_keywords"/>
重新启动tomcat之后,发现solr中已经有了配置的业务字段
四、维护索引库
1. 添加数据
查询数据
2. 更新数据
在solr中没有update,只需要添加一个新的文档,要求文档id和被修改文档的id一致。原理是先删除后添加。3. 删除数据
五、Java整合Solr
使用maven依赖solrJ包<!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> </dependency>
增加和删除:
public class SolrJTest { @Test public void addDocument() throws Exception { //创建一连接 SolrServer solrServer = new HttpSolrServer("http://192.168.172.129:8080/solr"); //创建一个文档对象 SolrInputDocument document = new SolrInputDocument(); document.addField("id", "test001"); document.addField("item_title", "测试商品2"); document.addField("item_price", 54321); //把文档对象写入索引库 solrServer.add(document); //提交 solrServer.commit(); } @Test public void deleteDocument() throws Exception { //创建一连接 SolrServer solrServer = new HttpSolrServer("http://192.168.172.129:8080/solr"); //两种删除方式 solrServer.deleteById("test001"); //solrServer.deleteByQuery("*:*"); solrServer.commit(); } }
查询:
@Test public void queryDocument() throws Exception { SolrServer solrServer = new HttpSolrServer("http://192.168.25.154:8080/solr"); //创建一个查询对象 SolrQuery query = new SolrQuery(); //设置查询条件 query.setQuery("*:*"); query.setStart(20); query.setRows(50); //执行查询 QueryResponse response = solrServer.query(query); //取查询结果 SolrDocumentList solrDocumentList = response.getResults(); System.out.println("共查询到记录:" + solrDocumentList.getNumFound()); for (SolrDocument solrDocument : solrDocumentList) { System.out.println(solrDocument.get("id")); System.out.println(solrDocument.get("item_title")); System.out.println(solrDocument.get("item_price")); System.out.println(solrDocument.get("item_image")); } }
相关文章推荐
- 搜索引擎环境搭建nutch2.2.1+solr4.2+mysql5.7(附PHP solr拓展安装)
- 基于hadoop+nutch+solr的搜索引擎环境搭载<一>hadoop完全分布式环境搭建
- Solr 4.5.1 搜索引擎 环境搭建
- 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】
- 使用mongodb作为数据源搭建solr搜索引擎之创建同步索引实现
- CentOS6.5下nutch1.7+solr4.8.1+Eclipse环境搭建(二)之solr4.8.1安装
- Linux上 Nutch 1.3 + Solr 3.4.0 + Tomcat6.0 搜索引擎单节点搭建笔记
- 利用nutch、hbase和solr搭建搜索引擎
- 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】 分类: 1_Nutch 0_jediael开发 2015-01-24 17:24 3522人阅读 评论(1) 收藏
- Solr 4.3.1稳定版 安装部署平台搭建
- 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】
- Nutch搜索引擎(第2期)_ Solr简介及安装
- 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】
- 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】
- 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】
- 一个简单搜索引擎的搭建过程(Solr+Nutch+Hadoop)
- 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】
- 搜索引擎:solr--搭建和分析中文分词器。上
- 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】
- 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】