solr(二)---基本使用

    累覺不愛啊!昨日本文已將近完工,看到文本編輯器提示自動保存了草稿也就沒做保存操作。可惜悲劇還是來了,所有的內容都沒有了!今日只得從頭來過了。

    好吧,廢話不多說,繼續solr的學習。筆者上篇文章《solr(一)---介紹與安裝》介紹了solr的安裝。安裝好之後是不是不知道怎麼操作呢?另外是不是不理解solr、solr主目錄以及調用程序之間的關係?本文將進行詳細的介紹。

    一、solr關係介紹

    現在大家都知道了,solr是一個搜索工具,實現了lucene。solr安裝好了,admin頁面也可以訪問了。但是solr怎麼使用呢?solr主目錄是個什麼東東?和solr程序有什麼關係?我們怎麼關聯solr和使用solr呢?

    現在筆者根據自己的理解,舉如下例子來幫助理解(當然,如果筆者理解有誤,歡迎批評指正):

    現在,我們有一個web項目,名爲BS(Book search)。用於公司內部的共享書籍的管理和搜索。公司員工對所有的書籍進行了編號,員工通過查詢書籍名稱就能書籍當前是否借出、存放位置等信息。

    那爲了對書籍進行搜索,我們需要一個搜索系統(SS)。該系統獨立於BS,專門用於搜索。SS需要錄入書籍的信息、建立索引、支持搜索。該SS就是一個solr系統。

    那solr的主目錄呢?因爲對於一個solr系統,它可能有多個數據源,每個數據源搜索的內容不同、來源不同、結構不同...所以就有多個core。每個core就是solr的一個心臟,solr可以通過切換core去實現不同的搜索方式、要求。

    可能讀者還是不太理解,那後面在講解到solr的使用的時候,筆者會結合具體的配置來進行說明。

    二、solr基本結構

    上一篇講到,E:\solr-tomcat\solr爲筆者的主目錄,內容來自於F:\solr\solr-4.7.2\example\solr。於是,我們從示例中copy了一個比較完整的core。這個core的名字叫collection1,包含solr.xml和zoo.cfg文件。

    solr.xml是對整個solr的所有core的配置文件;而zoo.cfg配置了一些初始化參數。

    wKiom1RfAZfQyMflAAEHXYkG8No845.jpg

    collection1目錄下有一個conf目錄,裏面包含了該core的所有配置信息。其中最重要的兩個配置文件是:schema.xml和solrconfig.xml。

    solrconfig.xml是該core所配備的功能的配置。用來配置Solr的一些系統屬性,例如與索引和查詢處理有關的一些常見的配置選項,以及緩存、擴展等等;而schema.xml主要包括types、fields和其他的一些缺省設置。

    關於schema.xml的配置,網上有很多文章介紹。在這裏就不贅述了。

    三、solr操作

    首先!!我們需要在schema.xml中配置你即將解析的document的字段信息。例如,如果把XML作爲document的話,需要對該XML中所有fieldType和field進行配置。

    再對schema.xml和solrconfig.xml配置完成後(對於example中的collection1這個core,已經對exampledocs實例數據源的字段進行了配置,所以如果沒有特殊要求的話,其實不需要配置),打開admin頁面。在“Core Selector”的下拉框中,我們可以看到有“collection1”這個core。選擇這個core。

    wKioL1RfAhjD4MrgAALR9U2R8Rs674.jpg

    1、“Analysis”是分詞模塊。其顯示了所有在schema.xml配置的Field和FieldType。根據選擇的Field或FieldType的不同,可以對索引(Index)和查詢(Querty)實現不同的分詞功能。

    筆者添加了IKAnalyzer這個中文分詞器。配置了“text_ik”這個FieldType以及相關聯的“contents”這個Field。(後面筆者將介紹該分詞器的安裝)

    wKioL1RfA-3zEH3sAAOJMbjPiLE372.jpg

    2、“dataimport”模塊用於導入數據源。其支持全量和增量兩種方式。本文將暫時不介紹本部分的時候,後面講有專門的文章介紹。

    3、“documents”模塊用於導入文章作爲數據源。所支持的文檔類型多樣,主要爲JSON、XML、文件還有文檔自建。筆者以XMl和文件兩種方式來展示該模塊。

    a)、文件。選擇文檔類型爲“File Upload”,從F:\solr\solr-4.7.2\example\exampledocs目錄下選擇vidcard.xml文件上傳。

    wKiom1RfBeDiYIA5AAGtUPimtKA692.jpg

    提交之後,solr就會對該xml文件進行解析、建立索引了。工作完成後,我們就有了搜索的內容。

    b)、XML。把頁面上選擇文檔類型爲XML,把vidcard.xml文件的內容複製到文檔框內。

    wKioL1RfBz7jNqNLAAK-ex9wd4Y493.jpg

    提交之後,solr就會分析該xml內容、建立索引了。工作完成後,我們就有了搜索的內容。

    4、“Query”模塊用於對已建索引、處理完的數據源來進行查詢。

    例如,在上一步上傳的vidcard.xml中有name這個field,它的值是“ASUS Extreme N7800GTX/2DHTV (256 MB)”:

<field name="name">ASUS Extreme N7800GTX/2DHTV (256 MB)</field>

    因爲“documents”模塊已對該xml進行了處理和建索引,所以我們可以直接搜索該字段的結果。

    wKioL1RfCfqCsoTXAAQNWjilB3U866.jpg

    從圖中可以看出,我們搜索出了"name"字段中包含“Extreme”的記錄。

    其實從我們修改url也能實現查詢功能:

    wKioL1RfEKKCIo_uAAUAYx8UFOM132.jpg

     四、添加中文分詞器

    中文分詞在solr裏面是沒有默認開啓的,需要我們自己配置一箇中文分詞器。目前可用的分詞器有smartcn,IK,Jeasy,庖丁。

    下面給出兩種分詞器的安裝方法,任選其一即可,推薦第一種,因爲smartcn就在solr發行包的contrib/analysis-extras/lucene-libs/下,就是lucene-analyzers-smartcn-4.2.0.jar,首選在solrconfig.xml中加一句引用analysis-extras的配置,這樣我們自己加入的分詞器纔會引到的solr中.

    <lib dir="F:\solr\solr-4.7.2\contrib\analysis-extras\lib" regex=".*\.jar" />

    4.1、smartcn 分詞器的安裝

    首選將發行包的contrib/analysis-extras/lucene-libs/ lucene-analyzers-smartcn-4.2.0.jar複製到\solr\contrib\analysis-extras\lib下,在solr本地應用文件夾下,打開/solr/conf/scheme.xml,編輯text字段類型如下,添加以下代碼到scheme.xml中的相應位置,就是找到fieldType定義的那一段,在下面多添加這一段就好啦.

<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">
      <analyzer type="index">
        <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
        <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
      </analyzer>
      <analyzer type="query">
         <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
        <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
      </analyzer>
</fieldType>
 <field name ="text" type ="text_smartcn" indexed ="true" stored ="false" multiValued ="true"/>

    4.2、IK 分詞器的安裝

    首選要去下載IKAnalyzer的發行包.下載地址: http://ik-analyzer.googlecode.com/files/IK%20Analyzer%202012FF_hf1.zip.

    下載後解壓出來文件中的三個複製到F:\solr\solr-4.7.2\contrib\analysis-extras\lib目錄中.

    IKAnalyzer2012FF_u1.jar       分詞器jar包

    IKAnalyzer.cfg.xml                 分詞器配置文件

    Stopword.dic                           分詞器停詞字典,可自定義添加內容

    複製後就可以像smartcn一樣的進行配置scheme.xml了.

<fieldType name="text_ik" class="solr.TextField"> 

         <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> 

</fieldType>

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章