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