solrStudy1-solr字段详解

1.
动态字段(Dynamic fields)允许 solr 索引没有在 schema 中明确定义的字段。这个在忘记定义一些字段时很有用。动态字段可以让系统更灵活,通用性更强。
动态字段和成规字段类似,除了它名字中包含一个通配符外,在索引文档时,一个字段如果在常规字段中没有匹配时,将到动态字段中匹配。
假设schema中定义了一个叫*_i的动态动态字段,如果要索引一个叫 cost_i 的字段,但是 schema 中不存在 cost_i 的字段,这样 cost_i  将被索引到 *_i 字段中。
动态字段也是定义在 schema.xml 文件中,和其他字段一样,它也有个名词,字段类型,和属性。
1
< dynamicField name = "*_i" type = "sint" indexed = "true" stored = "true" />

建议在 schema.xml 定义一些基本的动态字段,以备扩展之用。

2.

你可能想让document的一些字段可以多次使用。solr 有一个字段复制机制,可以提交多个不同类型字段集中到一个字段。字段复制主要涉及两个概念,source和destination,一个是要复制的字段,另一个是要复制到哪个字段,以下是个例子:

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

上例中,如果text字段有数据的话,cat字段的内容将被添加到text字段中。maxChars 参数,一个int类型参数,用于限制复制的字符数。

source和destination都支持通配符。以下是一个将所有以 _t 结尾的字段全部复制到text字段中。
1
< copyField source = "*_t" dest = "text" maxChars = "25000" />
 

3.

一旦定义好了字段类型,定义一个字段就变得比较简单了。所有该做的就是指定一个名称和一个字段类型。如果你愿意,可以提供可选的内容用于替换字段类型中的定义的属性。

字段定义在 schema.xml 的 fields 元素下,以下的例子定义了一个 sfloat 类型的 price 字段。
1
< field name = "price" type = "sfloat" indexed = "true" stored = "true" />

4.

字段类型的类决定了字段的大部分形态,同时部分属性在schema.xml中也是可以定义的。举个例子,以下顶了日期类型的两个属性:sortMissingLast 和 omitNorms:

<fieldType name=”date”

sortMissingLast=”true” omitNorms=”true”/>

大部分的属性是 true 或 false。

这里是一些常用的属性:

 

字段属性

描述

indexed

如果为true,该字段可以被搜索

True 或 false

stored

如果为true,该字段可以值将被保存在索引库

True或 false

sortMissingFirst

sortMissingLast

X暂时不太理解

True或 false

multiValued

如果为true,该字段可以保存多个值

True或 false

positionIncrementGap

用于多值字段,表示多个值之间的距离,防止错误的短语匹配

整数

omitNorms

如果为true,忽略该字段的norms,只有全文字段或者字段在索引时设置boost需要norms。

True或 false

omitTermFreqAndPositions

 

True或 false

autoGeneratePhraseQueries

   

猜你喜欢

转载自ning2-eye.iteye.com/blog/2295377
今日推荐