solrStudy1-solr字段详解

本文介绍Solr中的动态字段功能,使索引过程更加灵活,并解释如何通过字段复制机制整合不同字段的数据,提高搜索效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值