读书人

SOLR 中 Schema.xml 的filedType 的一

发布时间: 2012-10-17 10:25:47 作者: rapoo

SOLR 中 Schema.xml 的filedType 的一些属性的理解 [转]备注起来

from matching across instances.?

?4. ?? omitNorms

The Solr schema file. This file should be named "schema.xml" and should be in the conf directory under the solr home (i.e. ./solr/conf/schema.xml by default) or located where the classloader for the Solr webapp can find it.

For more information, on how to customize this file, please see… wiki.apache.org/solr/SchemaXml

<schema name="solr" version="1.1">

料型, 你的料可能要分很多不同型做料建置以便solr引擎做索, 就像一般料一, 要存入的料做型分. 以下有string, boolean, integer, long, float, double 等等的料型, 就依你的求做定. 每一fieldtype 都有可定, 其中name就是你fieldtype的名子, 你可以你的方便取名. class是solr用的,就不可以取, 要你fieldtype的料型告solrfieldtype的料是什型的料,如 integer, text, string, long等等.
後面的sortMissingLast, omitNorms等定你可以考solr wiki schemalXml的介, 再依你的求使用. 考下列例.


<types>
<fieldtype name="string" sortMissingLast="true" omitNorms="true"/>
<fieldtype name="boolean" sortMissingLast="true" omitNorms="true"/>
<fieldtype name="integer" omitNorms="true"/>
<fieldtype name="long" omitNorms="true"/>
<fieldtype name="float" omitNorms="true"/>
<fieldtype name="double" omitNorms="true"/>
<fieldtype name="sint" sortMissingLast="true" omitNorms="true"/>
<fieldtype name="slong" sortMissingLast="true" omitNorms="true"/>
<fieldtype name="sfloat" sortMissingLast="true" omitNorms="true"/>
<fieldtype name="sdouble" sortMissingLast="true" omitNorms="true"/>
<fieldtype name="date" sortMissingLast="true" omitNorms="true"/>

如果是TextField的料型, 你可以用不同的Analyzer, Tokenizer, Filterfieldtype的料做理. 像是中文切, 除前後空白, 或同等等. 可依你的求使用. 考下列例.

<fieldtype name="text_ws" positionIncrementGap="100">
<analyzer>
<tokenizer positionIncrementGap="100">
<analyzer type="index">
<tokenizer ignoreCase="true" words="stopwords.txt"/>
<filter generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter protected="protwords.txt"/>
<filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter ignoreCase="true" words="stopwords.txt"/>
<filter generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
<filter protected="protwords.txt"/>
<filter positionIncrementGap="100" >
<analyzer>
<tokenizer synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
<filter ignoreCase="true" words="stopwords.txt"/>
<filter generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter protected="protwords.txt"/>
<filter type="string" indexed="true" stored="true"/>

上面位(field)是你document的id用, 型string, 要index, 也要存在你的料

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


dynamicField就是位, 要是你有太多位法一一定,你可以用dynamicField理像下面第一dynamicField就是, 所有位是以 _i做尾的 (如 a_i, sss_i, id_i等等)都套用定.

<dynamicField name="*_i" type="integer" indexed="true" stored="true"/>
<dynamicField name="*_t" type="text" indexed="true" stored="true"/>
<dynamicField name="*_f" type="float" indexed="true" stored="true"/>
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
<dynamicField name="*_d" type="date" indexed="true" stored="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
<dynamicField name="*_ri" type="sint" indexed="true" stored="true"/>
<dynamicField name="*_rf" type="sfloat" indexed="true" stored="true"/>
<dynamicField name="*_facet" type="string" indexed="true" stored="true"/>
</fields>

uniqueKey就像一般database的primary key一, 也就是整料的每一料的id位不可以另一料的id位有相同值.

<uniqueKey>id</uniqueKey>

defaultSearchField就是你在做query搜若不指定特定位做索, Solr就只查位.

<defaultSearchField>default</defaultSearchField>


copyField是用你一位的值到另一位用. 如你可以name的西copy到default, solr做索也索到name的西.

<copyField source="name" dest="default"/>


defaultOperator "AND", 就是你入的查句有空白 ex. " 餐", Solr搜解析器做你的query指令"AND餐". 若是 "OR" 就成"OR餐".

<solrQueryParser defaultOperator="AND"/>
</schema>

读书人网 >XML SOAP

热点推荐