Solr的搭建

前言:

接触solr也有一段时间,在这里将学习的过程和体会记录一下。希望能给刚刚接触solr的人带来一些帮助。(实验环境 Windows+Solr5.5.2)

solr下载

可以在solr的官网找到之前和最新的solr版本 http://archive.apache.org/dist/lucene/solr/实验室的环境使用的是5.5.2,所以本教程使用的也是该版本,在上面的链接中找到对应的版本,下载解压solr-5.5.2.zip即可。

你想输入的替代文字

solr运行

solr的运行也是很方便,在solr-5.5.2\bin中输入命令行即可运行,我直接在CMD输入命令行,至于为什么不用gitbash是因为,每次启动solr服务和创建核心的时候,总是会提示我端口的问题,导致核心创建失败,换到CMD就不会有这个问题。

1
D:\solr\solr-5.5.2\solr-5.5.2\bin>solr start

你想输入的替代文字

看到上面的命令行结果,就表示运行成功了。浏览器输入 http://localhost:8983/solr/#/ 就可以看到solr的界面了。关于solr界面的功能会在下面慢慢道来。

你想输入的替代文字

创建核心

核心你就把它想成是一个管理你索引位置、索引方式、配置数据源等的一个地方即可。用下面的命令创建一个core。

1
D:\solr\solr-5.5.2\solr-5.5.2\bin>solr create -c new_core

你想输入的替代文字

在/solr-5.5.2/server/solr/目录下可以看到刚刚创建好的new_solr核心,在这个新创建的核心中需要配置的文件有managed-schema.xmlsolrconfig.xml

你想输入的替代文字

solrconfig.xml的配置

打开solrconfig.xml,在这里我们配置一下数据的导入方式,在solrconfig.xml找到其他的requestHandler,把下面的配置复制到一起,便于以后管理。

1
2
3
4
5
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

然后在conf目录下生成一个data-config.xml的文件,来配置一下我们的数据源,指定一下数据库的链接地址和表中的数据即可。

1
2
3
4
5
6
7
8
9
10
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://10.1.13.29/test" user="root" password="password" batchSize="-1"/>
<document>
<entity name="solr_test" query="SELECT id,word,keyNo FROM solr_test">
<field column="id" name="id" />
<field column="word" name="word" />
<field column="keyNo" name="keyNo" />
</entity>
</document>
</dataConfig>

重启一下solr,你会发现solr界面报了一个错误,提示找不到DataImportHandler这个类。

1
D:\solr\solr-5.5.2\solr-5.5.2\bin>solr restart -p 8983

你想输入的替代文字

只要把D:\solr\solr-5.5.2\solr-5.5.2\dist目录下的solr-dataimporthandler-5.5.2.jar还有solr-dataimporthandler-extras-5.5.2.jar 拷贝到
D:\solr\solr-5.5.2\solr-5.5.2\server\solr-webapp\webapp\WEB-INF\lib中既可。

除了上面的两个包以外,还需要导入jdbc的包,不然你会发现数据导入不进去。JDBC下载链接 ,点击链接把下载的包,放到刚刚的文件夹…\WEB-INF\lib中,那么数据来源这块就算解决了。重启一下solr服务,在solr界面中选择你创建的核心,点击Dataimport功能,选择entity,然后执行即可。

你想输入的替代文字

managed-schema的配置

数据的来源配置解决了,选择来考虑一下对哪些数据进行索引。打开managed-schema.xml,把下面的配置添加上去,field的配置不细说,就是对word和keyNo进行了索引,并且在搜素的时候指定默认的字段是word和keyNo。

1
2
3
4
5
6
<field name="word" type="string" indexed="true" stored="true" required="false" multiValued="false" />
<field name="keyNo" type="string" indexed="true" stored="true" required="false" multiValued="false"/>

<field name="defaultField" type="string" indexed="true" stored="false" required="false" multiValued="true" />
<copyField source="word" dest="defaultField" />
<copyField source="keyNo" dest="defaultField" />

还需要到solrconfig.xml中把默认搜素的字段指定到defaultField,这样在我们不指定字段的时候,就会到默认字段中搜素。找到配置文件中要修改的位置,把<str name="df">defaultField</str>添加上去。

1
2
3
4
5
6
7
8
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<!-- <str name="df">text</str> -->
<str name="df">defaultField</str>
</lst>
</requestHandler>

因为配置文件修改了,所以要重新启动solr服务,重启之后,在dataimport功能中重新excute一下,因为我们添加数据的索引方式,所以数据需要重新import一下。等这两步操作完成以后,在solr界面中的Query看看搜索的效果。

你想输入的替代文字

至此,solr的搭建和数据查询都已经完毕,在下一篇博客中,再来讲一讲solr的中文分词