【Solr】copy字段的應用

 

目錄java

界面查詢應用

添加一個文檔數據庫

查詢添加的文檔tomcat

以上詳細介紹了query裏面的參數詳解。性能

當不輸入任何條件時,進行查詢,看看返回結果。spa

返回了剛纔添加進去的文檔。3d

添加文檔時,咱們添加了id,title,content 分詞,那麼若是咱們想本身定義,該如何?code

{"id":"change.me","aaaaaa":"change.me"}

結果返回錯誤:xml

Status: error
Error: Bad Request
Error:
{
  "responseHeader": {
    "status": 400,
    "QTime": 1
  },
  "error": {
    "msg": "ERROR: [doc=change.me] unknown field 'aaaaaa'",
    "code": 400
  }
}

不能發現 aaaaaa 這個filed!!blog

熟悉兩個重要的文檔

1.Schema.xml索引

schema.xml位於solr/conf/目錄下,相似於數據表配置文件,定義了加入索引的數據的數據類型,主要包括type、fields和其餘的一些缺省設置。

  Field:域的定義

  • Name:域的名稱
  • Type:域的類型
  • Indexed:是否索引
  • Stored:是否存儲
  • multiValued:是否多值,若是是多值在一個域中能夠保持多個值。
  • dynamicField動態域

  dynamicField:動態域

  • Name:域的名稱,是一個表達式。若是域的名稱和表達式相匹配,此域名就能夠使用。
  • Type:域的類型
  • Indexed:是否索引
  • Stored:是否存儲
  • multiValued:是否多值,若是是多值在一個域中能夠保持多個值。

  uniqueKey

  • 每一個文檔必須有一個uniqueKey,並且不能重複。至關於表中的主鍵。

  copyField

  • 複製域。
  • Source:源域
  • Dest:目標域。
  • 建立文檔時,solr會自動把源域的內容複製到目標域。使用複製域能夠提供查詢的性能。

  fieldType

  • 域的類型。
  • Name:域類型名。
  • Class:對應的實現類。solr.TextField相似於Lucene中的TextField。能夠配置用戶自定義的分析器。

存儲的都是一些solr內置的字段。

能夠本身定義一些字段和類型

solr/collection1/conf

找到Schema.xml文件,進行添加

   <!-- Anny  配置字段-->
   <field name="title_ik" type="text_ik" indexed="true" stored="true"/>
   <field name="content_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>

   <!-- IKAnalyzer- 配置類型-> 採用中文分詞器
   <fieldType name="text_ik" class="solr.TextField">
     <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
   </fieldType>
   <!--IKAnalyzer Field-->

  

  配置步驟:

  • 第一步:把IKAnalyzer2012FF_u1.jar添加到solr工程的lib庫中。
  • 第二步:把配置文件和擴展詞典、停用詞詞典添加到solr工程classpath下。Solr/WEB-INF/classes。保證字典的字符集是utf-8.注:classes沒有這個文件夾手動建立就好!

     jar包下載地址:http://pan.baidu.com/s/1skphG9v

IKAnalyzer.cfg.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 擴展配置</comment>
    <!--用戶能夠在這裏配置本身的擴展字典     -->
    <entry key="ext_dict">ext.dic</entry> 

    <!--用戶能夠在這裏配置本身的擴展中止詞字典-->
    <entry key="ext_stopwords">stopword.dic;</entry> 
    
</properties>

ext.dic配置文件

惠民
中商惠民www
baby
屌絲男士
野菊花
向日葵
菊花
葵花

注:若是文檔第一行的詞,沒有進行分詞處理,那麼就驗證了第一行不進行分詞。能夠空一行!

配置完畢後,進行重啓tomcat便可訪問。

copy域的應用

將數據庫的字段建立類型和域

<!--product-->
   <field name="product_name" type="text_ik" indexed="true" stored="true"/>
   <field name="product_price"  type="float" indexed="true" stored="true"/>
   <field name="product_description" type="text_ik" indexed="true" stored="false" />
   <field name="product_picture" type="string" indexed="false" stored="true" />
   <field name="product_catalog_name" type="string" indexed="true" stored="true" />

   <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
   <copyField source="product_name" dest="product_keywords"/>
   <copyField source="product_description" dest="product_keywords"/>

copyField域  

<copyField source="product_name" dest="product_keywords"/> 建立索引product_name,複製到product_keywords裏面了。把多個域的關鍵詞複製到同一個域,多個域時,能夠放到一個域中。就不用定義那麼多域了。搜索比較方便。
相關文章
相關標籤/搜索