java - Lucene中跨多个字段的重复值的影响

标签 java indexing lucene.net lucene

在 lucene 索引中跨多个字段重新索引相同值会产生什么影响?

这个想法是某人的名字是他们名字和一般详细信息的一部分。所以我想将该值索引到多个字段中。 Ted Bloggs 我可能索引如下:

Field        |    Value
-------------|---------
firstName    | Ted
lastName     | Blogs
name         | Ted
name         | Bloggs
general      | Ted
general      | Bloggs
all          | Ted
all          | Bloggs

通过这样做,我可以轻松地形成字段类别,但我担心它可能会对性能和/或磁盘使用产生不利影响。

谁能给个建议

最佳答案

@aishwarya 是对的,但要进一步扩展它:

来自 the docs :

This file is sorted by Term. Terms are ordered first lexicographically (by UTF16 character code) by the term's field name, and within that lexicographically (by UTF16 character code) by the term's text.

术语将在每个字段中存储一次,因此如果您将每个术语重复五次,您的存储空间将增加五倍。但是,术语 dic 的大小与原始数据的大小成对数关系,因此我怀疑您会遇到问题。

性能损失将不存在(Lucene 缓存每个字段开始的地方),除非有更多的数据会迫使内存不足。对于大多数搜索基础架构,您的索引可能不到几 GB,无论如何都可以轻松放入内存。

关于java - Lucene中跨多个字段的重复值的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356837/

相关文章:

mysql - 在 MySQL 中的 FK 之前创建索引

sql-server - SQL Server 2008 全文搜索 (FTS) 与 Lucene.NET

c# - 从 Lucene 中的查询中检索所有匹配文档的最有效方法是什么,未排序?

java - 无法解析encodetoString

python - Pandas :更改列中 bool 索引选择的值而不会收到警告

java - 用于 XML 解析的 JAXB 替代方案

mysql - 链接表和 substring_index 的命名约定

.net - 如何从 Lucene/Lucene.NET 中删除旧文档

java - JPA 中的 SQL 查询

java - 对象引用未保存的 transient 实例 : save the transient instance before flushing