Solr安裝及集成javaWeb

1.下載solr-4.7.1java

http://www.apache.org/dyn/closer.cgi/lucene/solr/4.7.1node

環境需求:java 1.6版本以上;solr運行須要java serverlet 容器,默認使用jetty,或者tomcat,jboss等等。mysql

2.Tomcat部署solr:web

1. 安裝好jdk 1.6以上(我用是jdk 1.7.0_15)安裝好tomcat(我用是apache-tomcat-7.0.6),並配置環境變量。算法

2. 將解壓包中的solr-4.7.1/dist/solr-4.7.1.war複製到tomcat_dir/webapps/目錄,並命名爲solr.war。sql

3.  將solr-4.7.1/example/lib/ext/目錄下的jar文件複製到tomcat/lib目錄下,將solr-4.7.1/example/resources/下的log4j.properties文件複製到tomcat_dir/lib目錄下;數據庫

切把 solr-4.7.1/example/solr,複製到tomcat_dir/bin下。apache

 

 4.修改tomcat_dir/conf/server.xml瀏覽器

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               URIEncoding="UTF-8" />

5.建立solr.xml,存放在路徑:tomcat/conf/Catalina/localhost/solr.xml,內容:tomcat

<Context path="/solr" docBase="F:\Tomcat 7.0\webapps\solr.war"
         debug="0" crossContext="true">
  <Environment name="solr/home" type="java.lang.String" value="FF:\Tomcat 7.0\bin\solr\" override="true" />
</Context>

 注意:上面的docBase和value路徑中不能存在中文字符,不然會出現404錯誤。

 此時若安裝及配置都正確,在瀏覽器中輸入:http://127.0.0.1:9000/solr/,會出現Solr的管理界面:

 

 

6.將F:\Tomcat 7.0\webapps下的solr.war包,啓動項目解壓;而後再添加幾個jar包:

    solr-4.7.1\dist\solr-dataimporthandler-4.7.1.jar;

    solr-4.7.1\dist\solr-dataimporthandler-extras-4.7.1.jar;

    還要加載數據庫驅動包:mysql-connector-java-3.1.13-bin.jar

七、在F:\Tomcat 7.0\bin\solr\collection1\conf 下的solrconfig.xml增長如下數據庫配置:

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

8.將tomcat\bin\solr\collection1\conf下增長data-config.xml文件,內容以下:

<dataConfig>  
    <dataSource type="JdbcDataSource"  
   driver="com.mysql.jdbc.Driver"  
   url="jdbc:mysql://192.168.1.221:3306/tmsdb"  
   user="root"  
   password="123456"/>  
    <document name="content">  
        <entity name="node" query="select id,author,title,content from solrdb">  
            <field column="id" name="id" />  
            <field column="author" name="author" />  
            <field column="title" name="title" />  
            <field column="content" name="content" />
        </entity>  
    </document>  
</dataConfig>

9.增長中文分詞器,ik-analyzer的配置以下:

目前的中文分詞主要有兩種 
    1,基於中科院ICTCLAS的隱式馬爾科夫hhmm算法的中文分詞器,例如smartcn等。(不支持自定義擴展詞庫) 
    2,基於正向迭代最細粒度切分算法(正向最大匹配而且最細分詞)例如IK,庖丁等(支持自定義擴展詞庫) 

安裝分詞前,能夠去下載IK的分詞包 :

IK-Analyzer-4.7.1-0.0.1-SNAPSHOT.jar

下載完畢後,將此包放進tomcat\solr的\WEB-INF\lib下面:tomcat\webapps\solr\WEB-INF\lib  。

下面須要在solr的schemal.xml進行分詞器註冊:

<!--  配置IK分詞器 -->  
    <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">  
      <analyzer type="index">  
      <!--  分詞-->  
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>  
         <!--   禁用詞過濾根據狀況使用-->  
        <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/> -->  
      </analyzer>  
      <analyzer type="query">  
       <!--  分詞-->  
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>  
        <!--   禁用詞過濾根據狀況使用-->  
        <!-- <filter class="org.wltea.analyzer.lucene.IKStopFilterFactory"/>-->  
      </analyzer>  
    </fieldType>

最後還得配置一個引用字段就OK了

 <field name="ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>

②它的安裝部署十分簡單,將IKAnalyzer2012.jar部署亍項目的lib目錄中;IKAnalyzer.cfg.xml不stopword.dic文件放置在class根目錄(對於web項目,一般是WEB-I NF/classes目彔,同hibernate、log4j等配置文件相同)下便可 ;而後配置solr4.7中schema.xml配置解析器:

<schema name="example" version="1.1"> 
	…… 
	<fieldType name="text" class="solr.TextField"> 
		<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
	</fieldType>
	…… 
</schema>

10. solr schema.xml配置總結

    schema.xml 在solr/conf/目錄下,相似於數據表配置文件。

爲了改進性能,能夠採起如下幾種措施:

①.   將全部只用於搜索的,而不須要做爲查詢結果的field(特別是一些比較大的field)的stored設置爲false。

②.   將不須要被用於搜索的,而只是做爲查詢結果返回的field的indexed設置爲false。 

③.   刪除全部沒必要要的copyField聲明,根據須要決定是否進行存儲。

④.   爲了索引字段的最小化和搜索的效率,將全部的 text fields的index都設置成false,而後使用copyField將他們都複製到一個總的 text field上,而後對他進行搜索。

⑤.   使用盡量高的Log輸出等級,減小日誌量。能夠在solr/admin 中的 LOGGING 進行設置。

    特珠說明:

    1.   高亮是基於分詞的,全部存儲須要高亮顯示的字段 必定要分詞(text)才能高亮顯示。

    2.   排序字段 是不能當  查詢過濾的條件。

文本主要配置項:

    ①.   field 類型定義

          重點是中文分詞的添加 

    ②.   field 各屬性定義

          name     type類型   indexed是否創建索引  stored是否存儲 required 是否必填項 multiValued多值存儲

    ③.   惟一key

         <uniqueKey>id</uniqueKey>

         文檔的惟一標識, 必須填寫這個field(除非該field被標記required="false"),不然solr創建索引報錯。

    ④.   默認搜索字段 field

         <defaultSearchField>text</defaultSearchField>

         若是搜索參數中沒有指定具體的field,那麼這個作爲默認的域。

    ⑤.   搜索參數短語間邏輯

         <solrQueryParser defaultOperator="OR"/>

          配置搜索參數短語間的邏輯,能夠是"AND|OR"。

          備註: AND是交集,OR是並集

    ⑥.  複製字段

         <copyField source="content" dest="text"/>

         將多個字段的值 複製至 一個字段中,若是被複制的字段都設置爲stored,那個這個字段務必不要設置成stored=true

    ⑦.  自定義評分器

         <similarity class="......SolrSimilarity"/>

          SolrSimilarity 是繼承 DefaultSimilarity的子類,或者實現評分器接口的類。

 

解析:multiValued:是否包含多個值,若是要使用後面的copyField將其餘字段放入默認搜索中就必須容許多指,不然會報:multiple values encountered for non multiValued copy field content

defaultSearchField配置默認搜索索引,copyField能夠將 title、author字段添加至content默認搜索中

<uniqueKey>id</uniqueKey>  
 <defaultSearchField>content</defaultSearchField>  
 <solrQueryParser defaultOperator="OR"/>  
<copyField source="title" dest="content"/>  
<copyField source="author" dest="content"/>
相關文章
相關標籤/搜索