solr的搭建自定義域。指定域的類型為自定義的FieldType。


一、單機版搭建(centOS6.4)

安裝solr需要有Java環境和tomcat的存在

 1、在/usr/local/目錄下建立一個文件solr    [root@localhost local]# mkdir solr

 2、 將tomcat拷貝到新鍵的solr目錄下,重命名    [root@localhost ~]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat -r

3、把解壓的solr壓縮包下面的dist中的solr-4.10.3.war拷貝到tomcat中 [root@localhost dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war

 4、解壓縮war包。啟動tomcat解壓       [root@localhost tomcat]# bin/startup.sh  

      之后關閉     [root@localhost tomcat]# bin/shutdown.sh

5、把/root/solr-4.10.3/example/lib/ext目錄下的所有jar拷貝到solr工程中  [root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

6、創建solrhome   把/root/solr-4.10.3/example下的solr文件夾復制作為solrhome   [root@localhost example]# cp -r solr /usr/local/solr/solrhome

7、告知solr服務solrhome的位置,需要修改web.xml

    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/usr/local/solr/solrhome</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

8、啟動tomcat

二、配置中文分析器、自定義業務域

2.1分析器使用IKAnalyzer。

  使用方法:

    第一步:把IKAnalyzer依賴的jar包添加到solr工程中。把分析器使用的擴展詞典添加到classpath中。    

        1、[root@localhost IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

        2、在/usr/local/solr/tomcat/webapps/solr/WEB-INF/下新建classes目錄

        3、將ext_stopword.dic、IKAnalyzer.cfg.xml、mydict.dic拷貝其中

          [root@localhost IK Analyzer 2012FF_hf1]# cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes/    

    第二步:需要自定義一個FieldType。Schema.xml中定義。可以在FieldType中指定中文分析器。

  <fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  </fieldType>

      第三部根據對應的sql語句,書寫自定義域。指定域的類型為自定義的FieldType。

  Sql語句:

    SELECT

           a.id,

           a.title,

           a.sell_point,

           a.price,

           a.image,

           b.`name` category_name,

           c.item_desc

     FROM

           tb_item a

      LEFT JOIN tb_item_cat b ON a.cid = b.id

      LEFT JOIN tb_item_desc c ON a.id = c.item_id

    WHERE

           a.`status` = 1

<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" />

<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 

大致配置

 

  <fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  </fieldType>
<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" />

<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"/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM