首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现基于索引中相同字段的常用精确匹配搜索?

如何实现基于索引中相同字段的常用精确匹配搜索?
EN

Stack Overflow用户
提问于 2016-09-23 22:54:32
回答 1查看 58关注 0票数 0

我们在我们的项目中索引各方,其中有名称,备用名称,不同的标识符,地址等。我们希望有严格的精确搜索功能,除了通常的搜索功能(没有倒置逗号)外,还可以使用单/双倒排逗号。

为了实现这一点,我们配置了两个不同的搜索处理程序,并根据用户输入中存在的反逗号在它们之间进行切换。此外,我们还使用for each one KeywordTokenizerFactory (用于严格精确匹配搜索)和StandardTokenizerFactory (用于常规搜索)对所有提到的参与方的属性进行索引。

但问题是Solr索引中的字段数量翻了一番,自然也增加了它的大小。

那么问题来了:是否可以在Solr索引中为每个参与方属性设置一个字段,从而实现这两种类型的搜索?

EN

回答 1

Stack Overflow用户

发布于 2016-09-23 23:19:41

如果您使用单个字段实现了相同的功能,那么索引中的数据量或多或少仍然是相同的。您搜索的令牌仍然必须存在并存储在某个地方,您最终会遇到一种令人困惑的情况,即很难对同一字段中包含的不同“类型”中的命中结果进行评分和排名(对于所有目的,这将是两个字段,只是名称相同。所以..。这是两个字段。)

使用当前的两个字段就可以做到这一点。但请记住,不必存储所有字段的内容(对于与其他字段具有相同值的字段,请使用stored="false" )。该值对于两个/所有字段都是相同的,所以只显示第一个字段的值,但是搜索两个字段/只搜索第一个字段/只搜索第二个字段。

减少索引大小的另一个选择是只存储字段的id,然后不存储任何其他字段。之后,通过从命中中查找id,从主数据存储中检索任何值。

还有针对特定字段的many options you can disable -根据您使用字段的方式,如termVectors等,可能不需要这些字段。

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

https://stackoverflow.com/questions/39663795

复制
相关文章

相似问题

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