跨多个索引按ID分区Lucene索引

时间:2012-04-03 21:05:06

标签: lucene.net lucene

我正在努力整理我的Lucene搜索解决方案,而我却无法弄清楚如何开始。

  • 在我的网站上,我希望在我的模型中进行一次搜索以跨越5种不同类型的对象。
  • 我希望我的结果作为一个列表返回,按照最佳匹配排序,以区分类型以便我可以正确显示数据
  • 我们的系统分为我们称之为网站的系统。我想按站点索引5个不同的模型对象。搜索将始终由网站完成。

我不知道从哪里开始索引此系统以获得最佳性能。我也不确定如何最好地实现搜索此设置。任何建议,艺术和例子都非常感谢。

编辑:

因为有人说这太宽泛了,

假设我有3个站点,站点1,站点2和站点3。

假设我正在为Dogs,Cats和Hamsters编制索引。每种类型的记录都链接到一个站点。

因此,例如,我的数据可能是(Type,Name,SiteId)

Dog, "Fido" 1
Cat, "Sprinkles", 2
Hamster, "Sprinkles", 2
Cat, "Mr. Pretty", 3
Cat, "Mr. Pretty 2", 3

因此,当我搜索“Mr. Pretty”时,我想定位一个特定的站点ID。如果我反对网站ID 1,我将得到0结果。如果我搜索网站ID 3,我会得到

Mr. Pretty
Mr. Pretty 2

如果我在Site 2上搜索“Sprinkles”,我会知道一个结果是猫,另一个结果是仓鼠。

实现这种搜索索引的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

正如goalie7960建议的那样,您可以为每个文档添加“SiteID”,并在查询中添加siteid:3等查询字词,以便仅从此网站检索文档。您还可以通过为每个不同的站点创建和存储Filter来提高性能,以便将其应用于对应的查询。

关于同一索引中的不同类型,您可以使用相同的策略。为每个具有相应类型(可能只是ID)的文档创建“类型”字段。 Elasticsearch使用相同的策略在同一索引中具有不同的可区分类型。同样,您可以在类型上使用过滤器来加速查询(Elasticsearch也会这样做)。