Solr 配置文件之schema.xml
生活随笔
收集整理的這篇文章主要介紹了
Solr 配置文件之schema.xml
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
schema.xml這個配置文件的根本目的是為了通過配置告訴Solr怎樣建立索引。
solr的數據結構例如以下:
schema.xml的基本結構例如以下: <schema> <types> <fields> <uniqueKey> <copyField> </schema>
經常使用的配置說明:
一個簡單的樣例:
<?xml version="1.0" encoding="UTF-8" ?><schema name="course_video" version="1.5"><field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /><field name="_version_" type="long" indexed="true" stored="true"/><field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" /><field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" /><field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" /><field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" /><copyField source="title" dest="info_text" /><copyField source="content" dest="info_text" /><copyField source="tags" dest="info_text" /><uniqueKey>id</uniqueKey><fieldType name="string" class="solr.StrField" sortMissingLast="true" /><fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType></schema>
注:solrconfig.xml配置文件里,requestHandler "/select"的缺省“df”是“text”。假設依照上面的配置。我們想要的缺省搜索info_text,所以須要在solrconfig.xml中改動: <requestHandler name="/select" class="solr.SearchHandler"> ? ? ?<lst name="defaults">? <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="defType">edismax</str> <str name="df">info_text</str> </lst> ? ? </requestHandler>
能夠通過http api獲取schema信息: http://<ip>:8983/solr/<collection>/schema?wt=json
http://<ip>:8983/solr/<collection>/schema/fields?wt=json http://<ip>:8983/solr/<collection>/schema/dynamicfields?wt=json
http://<ip>:8983/solr/<collection>/schema/copyfields?wt=json
(原創文章,轉載請注明轉自Clement-Xu的博客)
solr的數據結構例如以下:
- document:一個文檔、一條記錄
- field:域、屬性
schema.xml的基本結構例如以下: <schema> <types> <fields> <uniqueKey> <copyField> </schema>
經常使用的配置說明:
- field:定義一個document中的各個fields
- name:必填。該field的名字。前后都有下劃線的name是系統保留的名字,比方“_version_”
- type:必填。
類型。相應于fieldType的name
- default:該field的缺省值
- indexed:true/false。是否為該field建立索引,以讓用戶能夠搜索它、統計它(facet)
- stored:true/false,定義這個field能否夠返回給查詢者
- multiValued:true/false。能否夠容納多個值(比方多個copyField的dest指向它)。假設是true。則該field不能被排序、不能作為uniqueKey
- required:true/false。告訴solr這個field是否接受空值,缺省為false
- docValues:true/false。建立document-to-value索引。以提高某些特殊搜索的效率(排序、統計、高亮)
- copyField:把一個field的內容復制到另外一個field中。一般用來把幾個不同的field copy到同一個field中,以方便僅僅對一個field進行搜索
- source:被拷貝的field,支持用通配符指定多個field,比方:*_name
- dest:復制到的目的field
- maxChars:最大字符數
- uniqueKey:指定一個field為唯一索引
- fieldType:定義field的類型,包含以下一些屬性
- name:必填,被field配置使用
- class:必填,filedType的實現類。solr.TextField是路徑縮寫,"等價于"org.apache.solr.schema.TextField"
- multiValued:?
- positionIncrementGap:指定mutiValued的距離
- ananlyzer:假設class是solr.TextField,這個配置是必填的。
告訴solr怎樣處理某些單詞、怎樣分詞,比方要不要去掉“a”。要不要所有變成小寫……
- type:index或query
- tokenizer:分詞器,比方:StandardTokenizerFactory
- filter:過濾器。比方:LowerCaseFilterFactory
- dynamicField:用通配符定義一個field來存在沒有被field定義的漏網之魚
- name:使用通配符。比方“*_i”,來處理類似“cost_i”之類的field
一個簡單的樣例:
<?xml version="1.0" encoding="UTF-8" ?><schema name="course_video" version="1.5"><field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" /><field name="_version_" type="long" indexed="true" stored="true"/><field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" /><field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" /><field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" /><field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" /><copyField source="title" dest="info_text" /><copyField source="content" dest="info_text" /><copyField source="tags" dest="info_text" /><uniqueKey>id</uniqueKey><fieldType name="string" class="solr.StrField" sortMissingLast="true" /><fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"><analyzer type="index"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType></schema>
注:solrconfig.xml配置文件里,requestHandler "/select"的缺省“df”是“text”。假設依照上面的配置。我們想要的缺省搜索info_text,所以須要在solrconfig.xml中改動: <requestHandler name="/select" class="solr.SearchHandler"> ? ? ?<lst name="defaults">? <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="defType">edismax</str> <str name="df">info_text</str> </lst> ? ? </requestHandler>
能夠通過http api獲取schema信息: http://<ip>:8983/solr/<collection>/schema?wt=json
http://<ip>:8983/solr/<collection>/schema/fields?wt=json http://<ip>:8983/solr/<collection>/schema/dynamicfields?wt=json
http://<ip>:8983/solr/<collection>/schema/copyfields?wt=json
(原創文章,轉載請注明轉自Clement-Xu的博客)
總結
以上是生活随笔為你收集整理的Solr 配置文件之schema.xml的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Bash]kill指定的进程名
- 下一篇: 如何使用proteus仿真