61581229 发表于 2017-12-18 21:41:40

solr schema.xml配置

  solr使用_version_来做文档的版本控制和修改时加锁(乐观锁)
  <field name="_version_" type="long" indexed="true" stored="true"/>
  indexed是否索引 只能在索引的列上进行查询
  stored是否存储 只能返回存储的列
  required 是否必须
  multiValued 是否多值
  <field name="id" type="string" indexed="true" stored="true" required="true"multiValued="false" />
  dynamicField 动态字段
  <dynamicField name="*_i"type="int"    indexed="true"stored="true"/>
  uniqueKey主键列
  <uniqueKey>id</uniqueKey>
  copyField
  <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
  <copyField source="cat" dest="text"/>
  各种fieldtype :
  sortMissingLast:排序的时候 空值排在后面
  <fieldType name="string" sortMissingLast="true" />
  <fieldType name="boolean" sortMissingLast="true"/>
  <fieldType name="int" precisionStep="0" positionIncrementGap="0"/>
  <fieldType name="float" precisionStep="0" positionIncrementGap="0"/>
  <fieldType name="long" precisionStep="0" positionIncrementGap="0"/>
  <fieldType name="double" precisionStep="0" positionIncrementGap="0"/>
  <!--
  precisionStep是数字才有的,是solr针对数字索引的一个优化字段。
  较小的precisionStep值(以位指定)将导致每值更多的索引索引,更大的索引大小和更快的范围查询。
  也就是说,空间和时间的平衡。
  positionIncrementGap:
  positionIncrementGap将此类型的多个字段(multiValued="true")的字段的多个值之间放置配置数量的空格,目的是防止字段间的错配短语匹配。
  -->
  <fieldType name="text_general" positionIncrementGap="100">
  <analyzertype="index">
  <tokenizer/>
  <filter ignoreCase="true" words="stopwords.txt" />
  </analyzer>
  <analyzer type="query">
  <tokenizer/>
  <filter ignoreCase="true" words="stopwords.txt" />
  <filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  <filter/>
  </analyzer>
  </fieldType>
  注意:
  stopwords.txt的格式是,每行一个停用词。
  synonyms.txt的格式是,在同一行输入多个同义词,逗号分隔。
  tokenizer用来分词,filter(可选)可以后续处理分词的结果。
  filter的作用:

[*]词元转换:如LowerCaseFilterFactory大小写转换。
[*]次元注入:如SynonymFilterFactory加入同义词。
[*]词元移除:如停用词过滤器StopFilterFactory。删除不必要的次元,如个,在等。
页: [1]
查看完整版本: solr schema.xml配置