schema.xml - solr的域

2019-03-17  本文已影响0人  Vekaco

solr中的域用来表示document的某一部分信息,而一个document可能有多个域组成。

以下为Field配置属性

Field与FieldType共同可选配置属性(若同时指定,Field会覆盖FieldType的设置)

Solr复制域
有时候,某个域的域值可能已经在其他域中存储,你可能不希望不再重复提取数据并复制,而是期望能不能从其他域上复制过来。CopyField的一个典型应用场景就是创建一个单一的搜索域来满足用户的各种查询需求。比如,用户搜索一本书籍时,title、author、keywords、description这几个域都应该被查询,但我们设计搜索功能的时候,有不能强制用户指定在那些域上进行搜索,即搜索域对于用户来书是完全透明的,此时我们可以定义一个copyField,将title、author、keywords、description这几个域的域值全部copy到新定义的复制域上,之后通过默认搜索对这个copyfile进行查询。

<copyField source="cat" dest="text" maxChars="30000"/>
<copyField source="vct" dest="text" maxChars="30000"/>

在示例中,text域的域值是从cat和vct这两个域复制过来的,source表示复制的源域名称,dest表示复制的目标域名称。source和dest的属性值都是支持通配符的。

solr动态域
动态域的name属性支持模糊匹配,他需要为name属性指定一个通配符表达式,当你索引文档时,如果一个field找不到,那么就会尝试根据通配符去匹配动态域。这样可以在索引数据需要添加新的域时,避免频繁修改schema.xml。

<dynamicField name="*_i" type="int" indexed="true" stored="true"/>

其他schema元素
I. uniqueKey:

<uniqueKey>id</uniqueKey>

uniqueKey用来配置Document的唯一标示域,即solr使用此域来决定增量导入时是否重复导入。copyField不能作为uniqueKey

II.defaultSearchField:
配置默认搜索域,已过时。推荐通过df参数来代替。

III.索引文档评分器:
可以配置在<schema>元素下,进行全局配置;也可以配置在<fieldType>元素下,则只对该域类型有效。

<similarity class="solr.BM25Similarity"/>
<similarity class="solr.SchemaSimilarityFactory">
<str name="defaultSimFromFieldType">text_dfr</str>
</similarity>
<similarity class="solr.DFRSimilarityFactory">
<str  name="basicModel">I(F)</str>
<str name="afterEffect">B</str>
<str name="normalization">H3</str>
<float name="mu">900</float>
</similarity>
<fieldType>

IV.solrQueryParser:

<solrQueryParser defaultOperator="OR"/>

设置queryParser默认操作符OR,已过时。推荐使用q.op请求参数来代替。

上一篇下一篇

猜你喜欢

热点阅读