首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在solr搜索中,多值字段与单个CSV字段相比有什么优势?

在solr搜索中,多值字段与单个CSV字段相比有什么优势?
EN

Stack Overflow用户
提问于 2012-08-31 12:08:15
回答 4查看 664关注 0票数 0

我是Solr的新手,正在为我的下一个项目设计solr shema。

我的问题是什么是/是优势(效率/执行时间等)当与CSV格式中包含多值的单个字段进行比较时,多值字段的。

例如:让我们考虑一个名为car的字段。因此,如果我正在设计一个solr搜索引擎,哪一个更好。请忽略schema/doc语法。

代码语言:javascript
复制
<Car>A</Car>
<Car>B</Car>
<Car>C</Car>

代码语言:javascript
复制
<Car> A,B,C</Car>
EN

回答 4

Stack Overflow用户

发布于 2012-08-31 15:33:44

如果该字段有多个值,那么您可能应该使用多值字段。

多值的东西可以防止错误的匹配。

例如,如果您的文档有多个作者。A B&C D

如果您将其作为单个字段进行索引,那么当您搜索短语匹配"B、C“(或具有较小斜率)时,它可能会匹配此文档,因为这些单词将出现在行中。

多值字段将防止这种具有适当位置增量值的匹配。

此外,多值字段将允许您正确过滤结果。

q=authores:"B C"或者更好,或者使用标签过滤出像q=query&fq=authors:"B C"这样的结果,这将利用过滤器缓存并提高查询性能。

票数 1
EN

Stack Overflow用户

发布于 2012-08-31 14:57:28

我认为主要的优势是你的索引的设计。如果您将这3个值放入单个字段中,则此字段表示在搜索1值之后。如果使用多值字段,则会为每个值创建并显示一个新字段。这有什么意义:

想象一下,您想要扩展索引。其中一个新字段的值可能如下所示

代码语言:javascript
复制
<LengthOfCar>5,0</LengthOfCar>

如果你现在想要处理给定的结果,你无法分辨哪些值是多值的,哪些不是,因为你用",“将其全部分开。也许对你来说很清楚,但所有其他用户都不会明白这一点。结果将针对单个字段:

代码语言:javascript
复制
<doc>
<str name="Car">A,B,C</str>
</doc>

多值字段的结果为:

代码语言:javascript
复制
<doc>
<arr name="Car">
<str>A</str>
<str>B</str>
<str>C</str>
</arr>
</doc>

如您所见,多值字段的结果更有意义。在某种程度上,使用它要容易得多(也许您想使用xslt或其他什么)。

根据你关于效率的问题:我不认为在性能和执行时间上会有任何不同。Solr的速度非常快,如果有任何不同,你甚至不会注意到不同之处。

所以我建议你使用多值字段,因为1个字段有3个不同的值。

票数 0
EN

Stack Overflow用户

发布于 2012-08-31 15:49:04

通过使用多值字段,您将拥有更大的灵活性。如果您使用多值字段,您可以搜索并过滤具有特定值的结果,如下所示。

代码语言:javascript
复制
q=car:A or fq=car:A

作为性能,在索引/搜索多值字段和单值字段时应该没有任何区别。

this mail post中,他们说多值字段会影响刻面性能。

MultiValued字段始终使用TermEnum算法,而不是FieldCache算法。

TermEnum适用于该字段中有限数量的不同索引项,并且允许每个文档的每个字段具有多个索引项,而FieldCache适用于相对于文档数量的大量索引值,并且每个文档的每个字段只允许一个索引项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12208769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档