solr相关配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr相关配置相关的知识,希望对你有一定的参考价值。
这段时间突然让我接手solr这个搜索引擎,为了让自己以后方便查阅,故记录下solr整个部署过程。
1、先上官网下载源码 源码下载
2、因为我是用tomcat来部署solr的,所以事先下载好tomcat jdk并配置好环境。
3、解压solr,此时的文件应该是这样的
4、复制server/solr/solr-webapp目录下的webapp到tomcat的webapps目录下,并重命名为solr(名字随意)。如果不想放在tomcat目录下的话,选择一个盘符放好,并修改tomcat/conf/server.xml 找到
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
在里面加一条
<Context path="/solr" reloadable="true" docBase="D:\\Java\\solr_web" sessionCookieName="ksessionid" />
path填站点名称 docBase则选择solr所在的目录。
4、复制server\\lib\\ext下的jar到tomcat\\webapps下的solr项目的WEB-INF\\lib中。
5、复制server\\lib下的所有带metrics的jar包到tomcat\\webapps下的solr项目的WEB-INF\\lib中。
6、在tomcat\\webapps\\solr(你的solr站点)目录下新建一个文件夹solrhome(名字可任意),所谓的solrhome目录实际上是一个运行的Solr实例所对应的配置和数据。我们建立的core都放在这个目录里。此时我们新建一个core文件夹,命名为jobseeker,并复制server\\solr\\configsets\\_default目录下的conf文件夹到jobseeker这个目录里,此时conf的文件应该是
当然,你也可以从example\\example-DIH\\solr里随意复制一个例子的conf。同时,将server\\solr下的solr.xml拷贝到solrhome目录下。
7、配置solrhome的位置。打开tomcat\\webapps\\solr\\WEB-INF下的web.xml,找到
<!-- People who want to hardcode their "Solr Home" directly into the WAR File can set the JNDI property here... --> <!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>F:\\java\\solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> -->
去掉<env-entry>的注释,并将刚才新建solrhome的目录填到<env-entry-value></env-entry-value>里。
8、如果打开站点发现404,则需解决权限问题 打开tomcat\\webapps\\solr\\WEB-INF下的web.xml,拉到底 找到<security-constraint>标签的都注释掉。
9、此时打开tomcat服务,访问http://localhost:8080/solr/index.html应该能访问成功了。因为前面我们已经新建了core的文件夹jobseeker,但是此时,还需要在网页上新建这个core的实例。点击core admin ,再点击add core,在name及instanceDir填上jobseeker后点击完成。此时core已经建立成功。
10、solr数据索引的导入。因为是从数据库导入的数据,所以需要依赖dataimport以及jdbc的数据库驱动。
将下载好的数据库驱动复制到\\tomcat\\webapps\\solr\\WEB-INF\\lib文件夹中,
在solrhome根目录下面新建extract
文件夹,
solr源码下contrib\\extraction\\lib
下所有jar包复制到Tomcat 9.0\\webapps\\solr\\solrhome\\extract
中
dist
下的solr-cell-7.1.0.jar
复制到Tomcat 9.0\\webapps\\solr\\solrhome\\extract
中
dist
下的solr-dataimporthandler-7.1.0.jar
和solr-dataimporthandler-extras-7.1.0.jar
这两个文件到Tomcat 9.0\\webapps\\solr\\WEB-INF\\lib中
打开solrhome\\Jobseeker\\conf
下的solrconfig.xml
文件,找到如下代码
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\\d.*\\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\\d.*\\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\\d.*\\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\\d.*\\.jar" />
在后面添加<lib dir="../extract" regex=".*\\.jar" />
(因为我在部署的时候,原来这个目录有点问题,导致dataimport老是找不到,故把相关包都丢进这个目录里了)
找到
<requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults"> <str name="lowernames">true</str> <str name="fmap.meta">ignored_</str> <str name="fmap.content">_text_</str> </lst> </requestHandler>
在lst节点里添加
<str name="uprefix">attr_</str> <str name="captureAttr">true</str>
uprefix : 如果指定了该参数,任何在schema中未定义的字段,都将以该参数指定的值作为字段名前缀。
captureAttr :(true|false)捕获属性,对Tika XHTML 元素的属性进行索引。
同时,在requestHandler后面添加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
即连接数据库的配置文件。
solrhome\\Jobseeker\\conf
下面新建data-config.xml
,打开加入以下代码
<?xml version="1.0" encoding="utf-8"?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://ip:端口;DatabaseName=数据库名" user="数据库账号" password="数据库密码"/> <document name="article"> <entity name="article" pk="Id" query="Select Id,Title,Content From Article"> <field column="Id" name="id" /> <field column="Title" name="title" /> <field column="Content" name="content" /> </entity> </document> </dataConfig>
因为我使用的是sqlserver的包,所以driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"。
这里<field column="Id" name="id" />
,column
是指数据库字段,name
对应索引文档的field 。
然后打开solrhome\\Jobseeker\\conf
下的managed-schema
文件,找到
<field name="_version_" type="plong" indexed="false" stored="false"/> <field name="_root_" type="string" indexed="true" stored="false" docValues="false" /> <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
添加上面数据库导入的字段(id,title,content
)。找到
<uniqueKey>id</uniqueKey>
这个是索引的主键,请改成自己相关的主键。
以上是关于solr相关配置的主要内容,如果未能解决你的问题,请参考以下文章