其他 schema 元素–默认搜索字段
<defaultSearchField>text</defaultSearchField>
其中 text 为字段名称。
<defaultSearchField>text</defaultSearchField>
其中 text 为字段名称。
<uniqueKey>id</uniqueKey>
<dynamicField name="*_i" type="sint" indexed="true" stored="true"/>
建议在 schema.xml 定义一些基本的动态字段,以备扩展之用。
<copyField source="cat" dest="text" maxChars="30000" />
上例中,如果text字段有数据的话,cat字段的内容将被添加到text字段中。maxChars 参数,一个int类型参数,用于限制复制的字符数。
<copyField source="*_t" dest="text" maxChars="25000" />
一旦定义好了字段类型,定义一个字段就变得比较简单了。所有该做的就是指定一个名称和一个字段类型。如果你愿意,可以提供可选的内容用于替换字段类型中的定义的属性。
<field name="price" type="sfloat" indexed="true" stored="true"/>
实例 |
Indexed |
Stored |
multiValued |
omitNorms |
termVectors |
termPosition |
搜索 | True | |||||
返回内容 | true | |||||
作为唯一值 | true | False | ||||
排序 | true | False | True[1] | |||
使用字段boosts[5] | False | |||||
文档boosts影响字段范围搜索 | false | |||||
高亮 | true[4] | true | [2] | True[3] | ||
层面[5] | true | |||||
添加多个值,包括排序 | true | |||||
字段长度影响文档评分 | false | |||||
更多相似[5] | True[6] |
说明:
1:推荐但不是必须
2:如果存在将生效,但不是必须
3:如果termVectors=true
4:该字段必须定义一个分词器,但是它不是必须被索引
5:在Understanding Analyzers, Tokenizers, and Filters中有描述
6:Term vectors 不是强制的,如果不是true,保存的字段将被分词。所以推荐使用term
Vectors,同时必须保证stored=false
<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 |
DateField 表示一个精确到毫秒的时间,值的格式是:
YYYY-MM-DDThh:mm:ssZ
YYYY 表示年.
MM 表示月.
DD 表示日.
hh 表示24小时制的小时.
mm 表示分钟.
ss 表示秒.
值的注意的是上面的那个时间格式里没有时区;带时区的时间格式可以通过格林尼治时间表示。这里是一个示例的值:
1972-05-20T17:33:18Z
另一个带毫秒的例子:
1972-05-20T17:33:18.772Z
另外,DataField也支持日期计算。这个可以方便创建相对于当前时间的时间点。可以用这个表达从现在往后两个月:
+2MONTHS
这个表示一天以前:
-1DAY
使用/可以表示当前的某部分时间,这个表示当前的小时:
/HOUR
当然也能组合表达式,以下表示的是六个月零三天以后的日(一个月的第几天):
+6MONTHS+3DAYS/DAY
sort 参与用于决定查询结果按升序(asc)或降序(desc)排列。这个参数可以用在数字或字母内容字段。
Solr 可以对查询结果按文档的得分或者被索引的单值字段(该字段在 schema.xml 文件中定义,同时 multiValued=”false” 和 indexed=”true”)的值进行排序。
如果想对一个字段同时进行层面搜索和排序,可以使用
以下是例子说明:
无:
没有指定 sort 参数时,搜索结果默认按文档得分(score)的降序(desc)排列
price asc:
按价格字段升序排列
inStock desc,price asc:
按 inStock 字段降序排列,如果字段值相同时,再按 pirce 字段升序排列
Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress 闽ICP备18020075号-1