我在SO和其他地方发现了多个问题,提出了“如何在Lucene中索引然后搜索关系数据”的问题。很正确地,这些问题都得到了标准响应的满足,Lucene并不是为这样的数据建模而设计的。我发现这句话总结了......
Lucene Index是一个文档存储。在文档存储中,单个 document表示存储所有必要数据的单个概念 代表这个概念(与传播的相同概念相比) 在需要多个连接的RDBMS中的多个表中 重新创建)。
所以我不会问这个问题,而是提供我的高级要求,看看那里的Lucene大师是否可以帮助我。
我们有两个实体 - 人员和公司 - 拥有自己的属性,然后存在它们之间的多对多链接的属性。
一些示例搜索可能如下...
标准涵盖所有三组数据。我们的要求是提供Faceted Search数据,接受各种属性的任意组合,我已经给出了一些例子。
我想用Lucene.Net来做这件事。我们是一个.Net软件公司,因此感觉受到java的轻微威胁。但是,欢迎所有建议。
我知道应该在考虑搜索的情况下构建索引。但我似乎无法提出一个能够满足所有搜索条件组合的合理指数
目前我不会描述我们考虑过的情景,因为我不想夸大这个问题并使其过于恐怖。请让我详细说明。
答案 0 :(得分:2)
要将公司和人员存储在一个索引中,您可以使用type
字段创建标识其描述的实体类型的文档。
生日可以存储为日期字段。
您可以为每个人提供一个简单的文本字段,其中包含他们所服务的公司的名称。请注意,如果您输入的索引中的文档未表示公司,则不会收到错误。 Lucene不是关系数据库工具,但你知道。
(很抱歉,我没有发布任何API的链接;我熟悉Lucene Core但不熟悉Lucene.NET。)