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 &quot;%r&quot; %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.jarsolr-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相关配置的主要内容,如果未能解决你的问题,请参考以下文章

我与solr--关于schema.xml中的相关配置的详解

solr相关配置

solr 学习片段

solr相关配置(搜索novel案例)

solr 查询的相关配置

solr的索引库core相关配置解析