【发布时间】:2013-01-11 13:43:55
【问题描述】:
在我们的应用程序中,我们一直在使用 Lucene.Net 来索引大量数据。字段本身是可配置的,因此字段的名称和类型可以随着每次重建而改变。在每个文档中,我们可以有多个具有相同名称的字段以及不同数量的数字和文本字段。由于我们在当前的开发中投入了大量工作,因此更改为不同的搜索引擎是行不通的。
事实是,在大多数情况下,它是一种魅力,但我们确实有一个我们似乎无法解决的困难。
假设我们要索引包含以下内容的文档“X”:
A 行 - 字段 1:4 + 字段 2:a
B 行 - 字段 1:8 + 字段 2:b
我们将创建的索引将包含 4 个字段:
- 文档 X:
- 字段 1:4(数字)
- 字段2:一个(文本)
- 字段 1:8(数字)
- 字段2:b(文本)
(行 ID 不重要)
搜索 Field1:[3 TO 6] AND Field2:b 会对该文档产生影响。
但是,行所表示的字段之间的链接(链接 4 和 'a')消失了。
我们可以连接像 4_a 这样的值,但这会破坏我们的数字搜索,并且需要客户端知道连接哪些字段以获得正确的结果。这也会增加我们分析器的难度,因为对于每个字段,我们可以添加不同的分析器(主要用于语言目的)。
此外,我们可以使用相同的键为每一行创建一个单独的文档,并在搜索结果中添加一个 distinct,但这听起来不像是要走的路,是吗?它会大大增加文档的数量,因为我们将为我们现在创建的每个文档创建 20 到 100 个文档。我没有在性能或可用性方面对此进行测试,因为当前的实现不允许我很容易地尝试这个:-)
有谁知道我如何在 Lucene.Net 中的某些字段之间强制建立链接,但仍然保留一种单独搜索每个字段的方法?
【问题讨论】:
-
我发现很难从问题的措辞中理解您实际搜索的内容。您是在查找单个行还是行聚合?请记住,Lucene 不是一个关系数据库,试图让它表现得像一个关系数据库通常不是一个好主意。
标签: lucene.net lucene