Linux系统下Solr7.0安装及设置中文分词和拼音检索

一、准备工作

Jdk版本 1.8.0_151

Tomcat版本 apache-tomcat-8.0.50

Solr版本 solr-7.0.0

二、安装solr

1、安装jdk不会的参考点击打开链接

tomcat安装请自行百度

2、安装solr

2.1、首先将solr-7.0.0.tgz上传到服务器,然后解压

[root@xiaojie ~]# tar -zxf solr-7.0.0.tgz

[root@xiaojie ~]# ll

然后会有一个solr-7.0.0文件

2.2、在/usr/local新建一个文件solr tomcat文件复制到solr文件下并命名为solrtomcat

[root@xiaojie local]# mkdir solr

[root@xiaojie local]# cp /root/apache-tomcat-8.0.50 /usr/local/solr/solrtomcat -r

2.3进入solr-7.0.0,复制并重命名solr-7.3.0目录里的server/solr-webapp/webapp文件夹到solrtomcatwebapps目录并重命名为solr

[root@xiaojie solr-7.0.0]# cd server

[root@xiaojie server]# ll

total 176

drwxr-xr-x 2 root root   4096 Jun 12 03:15 contexts

drwxr-xr-x 2 root root   4096 Jun 12 03:15 etc

drwxr-xr-x 3 root root   4096 Jun 12 03:15 lib

drwxr-xr-x 2 root root   4096 Jun 12 03:15 modules

-rw-r--r-- 1 root root   3977 Sep  8  2017 README.txt

drwxr-xr-x 2 root root   4096 Jun 12 03:15 resources

drwxr-xr-x 3 root root   4096 Sep  8  2017 scripts

drwxr-xr-x 3 root root   4096 Jun 12 03:15 solr

drwxr-xr-x 3 root root   4096 Sep  8  2017 solr-webapp

-rw-r--r-- 1 root root 142488 Oct 28  2016 start.jar

[root@xiaojie solr-webapp]# cp webapp /usr/local/solr/solrtomcat/webapps/solr -r

[root@xiaojie solr-webapp]#

2.4将需要的jar包,复制到部署的solrtomcat WEB-INF/lib/

server/lib/ext/下的所有jar复制到/usr/local/solr/solrtomcat/webapps/solr/WEB-INF/lib

[root@xiaojie server]# cd lib/ext/

[root@xiaojie ext]# ll

total 552

-rw-r--r-- 1 root root  16519 Apr  4  2014 jcl-over-slf4j-1.7.7.jar

-rw-r--r-- 1 root root   4730 Apr  4  2014 jul-to-slf4j-1.7.7.jar

-rw-r--r-- 1 root root 489884 May 26  2012 log4j-1.2.17.jar

-rw-r--r-- 1 root root  29257 Apr  4  2014 slf4j-api-1.7.7.jar

-rw-r--r-- 1 root root   8870 Apr  4  2014 slf4j-log4j12-1.7.7.jar

[root@xiaojie ext]# cp * /usr/local/solr/solrtomcat/webapps/solr/WEB-INF/lib

[root@xiaojie ext]#

 server/lib/metrics* 开头的5jar复制到   /usr/local/solr/solrtomcat/webapps/solr/WEB-INF/lib

-rw-r--r-- 1 root root 112565 Oct 28  2016 jetty-webapp-9.3.14.v20161028.jar

-rw-r--r-- 1 root root  50317 Oct 28  2016 jetty-xml-9.3.14.v20161028.jar

-rw-r--r-- 1 root root 129402 Mar 20  2017 metrics-core-3.2.2.jar

-rw-r--r-- 1 root root   9916 Mar 20  2017 metrics-ganglia-3.2.2.jar

-rw-r--r-- 1 root root  22056 Mar 20  2017 metrics-graphite-3.2.2.jar

-rw-r--r-- 1 root root  20053 Mar 20  2017 metrics-jetty9-3.2.2.jar

-rw-r--r-- 1 root root  40188 Mar 20  2017 metrics-jvm-3.2.2.jar

[root@xiaojie lib]# cp metrics-* /usr/local/solr/solrtomcat/webapps/solr/WEB-INF/lib

[root@xiaojie lib]#

2.5复制log4j配置文件

  server/resources/目录下的log4j.properties,复制到刚才部署的solrWEB-INF/,要创建一个classes的目录

[root@xiaojie server]# cp resources/log4j.properties /usr/local/solr/solrtomcat/webapps/solr/WEB-INF/classes/

[root@xiaojie server]#

2.6创建solr home

  复制并重命名solr-7.0.0/servier/solr/usr/local/solr/solrhome

[root@xiaojie resources]# cp ../solr /usr/local/solr/solrhome -r

[root@xiaojie resources]#

2.7、修改solr 工程下的web.xml 告知solrhome的位置

 

注释掉最后一句不然会报403错误。

 

 

2.8保存退出。启动tomcat

[root@xiaojie WEB-INF]# cd ../../../

[root@xiaojie webapps]# cd ../

[root@xiaojie solrtomcat]# cd bin/

[root@xiaojie bin]# ./startup.sh

Using CATALINA_BASE:   /usr/local/solr/solrtomcat

Using CATALINA_HOME:   /usr/local/solr/solrtomcat

Using CATALINA_TMPDIR: /usr/local/solr/solrtomcat/temp

Using JRE_HOME:        /usr/java/jdk1.8.0_151

Using CLASSPATH:       /usr/local/solr/solrtomcat/bin/bootstrap.jar:/usr/local/solr/solrtomcat/bin/tomcat-juli.jar

Tomcat started.

[root@xiaojie bin]#

浏览器访问http://ip:8080/solr/index.html

出现以上界面就说明安装成功了。

出错总结

错误1、如果出现了404,请检查URL,如果URL无误,请检查jar包是否拷贝全了。

错误2、如果报错找不到主机名,请做如下修改

报错:java.net.UnknownHostException: 主机名: 主机名

修改/etc/hosts文件

127.0.0.1 主机名 localhost.localdomain localhost

或是再添加一条

127.0.0.1 主机名

主机名是新加的,原来没有,保存,问题解决。

 

错误3、若虚拟机安装多个tomcat请自行修改端口号,避免保持端口冲突,请检查防火墙是否关闭,或者被访问的端口是否放行。方法如下,将你的端口添加进来即可。


然后重启防火墙配置生效

 

 

三、配置分词词典

3.1、添加库

 

     name:自定义的名字,建议和instanceDir保持一致

     instanceDirsolrhome目录下的实例类目

     dataDir:默认填data即可

     config:指定配置文件,new_core/conf/solrconfig.xml

     schema:指定schema.xml文件,new_core/conf/schema文件(实际上是managed-schema文件)

    注意:红色框内的内容,instanceDir and dataDir need to exist before you can create the core

    要求在创建solr核心时,instanceDir实例目录在sold home 中存在

    如果instanceDir实例目录不存在,点击添加会有如下提示,但会在solr/home中多一个instanceDir实例目录。

提示显示缺少solrconfig.xml

1)、将/usr/local/solr/solrhome/configsets/sample_techproducts_configs/conf 拷贝到mycore文件下

[root@xiaojie sample_techproducts_configs]# cp conf /usr/local/solr/solrhome/mycore -r

(2)、contrib目录,dist目录拷贝到solrhome目录中

  [root@xiaojie solr-7.0.0]# cp contrib dist /usr/local/solr/solrhome -r

[root@xiaojie solr-7.0.0]#

3)、修改mycore/config/solrconfig.xml

  将文件中<lib dir="${solr.install.dir:../../../..}.." 替换为 <lib dir=“/usr/local/solrhome/…."

 

 

(4) 、刷新页面,添加core出现如下页面添加成功

 

 

3.2、手动导入数据

a、引入相应jar包和ik的配置文件

-rw-r--r-- 1 root root      41 Jun  5  2016 ext.dic

-rw-r--r-- 1 root root     404 Jun  5  2016 IKAnalyzer.cfg.xml

-rw-r--r-- 1 root root 1167537 Jun  5  2016 ik-analyzer-solr5-5.x.jar

-rw-r--r-- 1 root root     912 Mar 30  2017 solr-analyzer-ik-5.1.0.jar

-rw-r--r-- 1 root root    8245 Jun  5  2016 stopword.dic

-rw-r--r-- 1 root root 209862 Mar 30  2017 pinyin4j-2.5.0.jar

-rw-r--r-- 1 root root  10398 Mar 30  2017 pinyinAnalyzer4.3.1.jar

b、将配置文件拷贝到solrclasses文件,将jar放到lib文件

-rw-r--r-- 1 root root 209862 Mar 30  2017 pinyin4j-2.5.0.jar

-rw-r--r-- 1 root root  10398 Mar 30  2017 pinyinAnalyzer4.3.1.jar

[root@xiaojie pinyin]# cp pinyin* /usr/local/solr/solrtomcat/webapps/solr/WEB-INF/lib/

[root@xiaojie pinyin]#

-rw-r--r-- 1 root root      41 Jun  5  2016 ext.dic

-rw-r--r-- 1 root root     404 Jun  5  2016 IKAnalyzer.cfg.xml

-rw-r--r-- 1 root root 1167537 Jun  5  2016 ik-analyzer-solr5-5.x.jar

-rw-r--r-- 1 root root     912 Mar 30  2017 solr-analyzer-ik-5.1.0.jar

-rw-r--r-- 1 root root    8245 Jun  5  2016 stopword.dic

[root@xiaojie ikanalyzer-solr5]# cp ik-analyzer-solr5-5.x.jar solr-analyzer-ik-5.1.0.jar /usr/local/solr/solrtomcat/webapps/solr/WEB-INF/lib/

[root@xiaojie ikanalyzer-solr5]#

 复制配置文件

[root@xiaojie ikanalyzer-solr5]#cp ext.dic IKAnalyzer.cfg.xml stopword.dic /usr/local/solr/solrtomcat/webapps/solr/WEB-INF/classes/

c、修改配置文件

修改/usr/local/solr/solrhome/mycore/conf/managed-schema文件

添加如下内容

 <!--添加拼音词典-->
        <fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0">
        <analyzer type="index">
         <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
         <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
           <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
           </analyzer>
           <analyzer type="query">
           <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
        <filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
        <filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
        </analyzer>
        </fieldType>
 <!-- 我添加的IK分词 -->
<fieldType name="text_ik" class="solr.TextField">
   <analyzer type="index">
      <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
   </analyzer>
   <analyzer type="query">
      <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
   </analyzer>
</fieldType>
  <!--配置数据内容--><!--根据实际需要配置字段-->
        <field name="item_title" type="text_pinyin" indexed="true" stored="true"/>
        <field name="item_city_id" type="pint" indexed="false" stored="true" />

(这里面的字段发生了变化)int对应pint ,long 对应plong如下图所示

      配置复制字段

 <!--配置复制字段-->
        <field name="item_keywords" type="text_pinyin" indexed="true" stored="false" multiValued="true"/>
        <copyField source="item_shopname" dest="item_keywords"/>

d:测试

若没有core,再重新添加一下。出现下面界面证明配置成功。

 

3.3添加数据

public void addDocument() throws Exception {
		//创建一连接
		SolrServer solrServer = new HttpSolrServer("http://192.168.220.121:8080/solr/mycore");
		//创建一个文档对象
		SolrInputDocument document = new SolrInputDocument();
		document.addField("id", "test000");
		document.addField("item_title", "测试商品2");
		document.addField("item_price", 54321);
		//把文档对象写入索引库
		solrServer.add(document);
		//提交
		solrServer.commit();
	}
        @Test
	public void testSolr() throws SolrServerException, IOException{//查询所有
		SolrServer solrServer=new HttpSolrServer("http://192.168.220.121:8080/solr/mycore");
		//solrServer.deleteById("test001");
		solrServer.deleteByQuery("*:*");
			solrServer.commit();
	}
	@Test
	public void testQuery() throws SolrServerException{//过滤查询
		SolrServer solrServer=new HttpSolrServer("http://192.168.220.121:8080/solr/mycore");
		SolrQuery query=new SolrQuery();
		query.set("q", "*:*");
		String [] fq={"item_cat_id:2"}; 
		query.addFilterQuery(fq);  //过滤 
		QueryResponse result = solrServer.query(query);
		SolrDocumentList results = result.getResults();
		for (SolrDocument list:results){
			String str1 = list.get("item_gid").toString();
			String str2=list.get("item_title").toString();
			System.out.println("分类gid-----"+str1);
			System.out.println("商品名称-----"+str2);
		}		
	}
3、4、托管数据(此处的内容转载来自 点击打开链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

熟透的蜗牛

永远满怀热爱,永远热泪盈眶

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

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

打赏作者

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

抵扣说明:

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

余额充值