首页 > 代码库 > 10.scheam.xml的配置

10.scheam.xml的配置

FieldType域类型定义

  1. <!-- 增加IKAnalyzer中文分析器,jar以及词库配置同lucene的配置-->
  2. <fieldType name="text_ik" class="solr.TextField">
  3. <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  4. <analyzer type="query" isMaxW ordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  5. </fieldType>

Field定义

在fields结点内定义具体的Field,filed定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否存储多个值,多值是Json数组)等属性。如下:
  1. <field name="name" type="text_general" indexed="true" stored="true"/>
  2. <field name="features" type="text_general" indexed="true" stored="true" multiValued="true"/>

uniqueKey

Solr中默认定义唯一主键key为id域,Solr在删除、更新索引时使用id域进行判断,也可以自定义唯一主键。
  1. <uniqueKey>id</uniqueKey>

copyField复制域

根据关键字只搜索text域的内容就相当于搜索title和content,将title和content复制到text中,如下:
  1. <copyField source="cat" dest="text"/>
  2. <copyField source="name" dest="text"/>
  3. <copyField source="manu" dest="text"/>
  4. <copyField source="features" dest="text"/>
  5. <copyField source="includes" dest="text"/>

dynamicField(动态字段)

动态字段就是不用指定具体的名称,只要定义字段名称的规则,例如定义一个 dynamicField,name 为*_i,定义它的type为text,那么在使用这个字段的时候,任何以_i结尾的字段都被认为是符合这个定义的,例如:name_i,gender_i,school_i等。
  1. <dynamicField name="*_i" type="int" indexed="true" stored="true"/>

根据业务系统定义Field

  1. <!--product-->
  2. <field name="product_name" type="text_ik" indexed="true" stored="true"/>
  3. <field name="product_price" type="float" indexed="true" stored="true"/>
  4. <field name="product_description" type="text_ik" indexed="true" stored="false" />
  5. <field name="product_picture" type="string" indexed="false" stored="true" />
  6. <field name="product_catalog_name" type="string" indexed="true" stored="true" />
  7. <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
  8. <copyField source="product_name" dest="product_keywords"/>
  9. <copyField source="product_description" dest="product_keywords"/>

10.scheam.xml的配置