我可以使用Lucene.net来索引和加入来自多个来源的结果

Mit*_*ins 0 lucene.net

我想使用Lucene.net来索引来自各种来源(例如本地文件系统和数据库)的数据.但是,我想链接来自两个来源的数据(基于公共字段,例如ID),并将组合信息显示给用户.据我所知,我有三种选择.索引每个来源后:

  1. 使用Lucene.net将搜索查询中的索引合并为单个结果集
  2. 创建一些自定义代码以追溯关联结果; 要么
  3. 将单独的结果集存储在数据库中(在我的情况下,它将不是与源相同的数据库).然后基于连接数据的查询创建新索引

选项1是我想要做的,但我不确定Lucene的可行性有几个原因:

  • Lucene不是一个关系数据库,是不是想尝试Lucene的设计呢?
  • 结合索引会导致明显的性能损失吗?

我选择2的唯一原因是,如果我相信我可以创建一个比选项1更有效的算法.遵循这条逻辑线,我就不得不质疑我是否应该使用Lucene来关联数据.

这导致我进入选项3.我很高兴它会起作用,但它似乎是一种妥协:

  • 数据将存储在数据库以及Lucene(以及原始数据源)中
  • 通过引入额外的步骤,完成该过程将花费更长的时间.我不确定这会如何影响用户体验

有什么建议?

Wya*_*ett 5

是的,你可以,但你需要停止思考关系并开始考虑文档而不是行.或者,选项3是正确的方法.你想要做的是创建一个文件持有:

a)无论我想搜索什么 - 用lucene术语分析的字段
b)指向完整的,现存的记录的指针 - 基本上是ID号或文件位置
c)如果可能的话,足以显示搜索结果而无需联系到文件系统或数据库 - 用lucene说法存储的字段.

在性能方面,不会有太多的开销或过载.动态地向索引添加内容并不是一个很大的性能影响,而且lucene本身的速度非常快.我会以合理的,组件化的方式构建它,然后在需要时潜入性能.