【问题标题】:Partition Lucene Index by ID across multiple indexes按 ID 跨多个索引对 Lucene 索引进行分区
【发布时间】:2012-04-05 03:36:24
【问题描述】:

我正在尝试整合我的 Lucene 搜索解决方案,但我不知道如何开始。

  • 在我的站点上,我希望一次搜索能够跨越模型中的 5 种不同类型的对象。
  • 我希望我的结果以一个列表的形式返回,首先按最佳匹配排序,并提供一种区分类型的方法,以便我可以适当地显示数据
  • 我们的系统被分成我们所说的站点。我想按站点索引 5 个不同的模型对象。搜索将始终按站点进行。

我不确定从哪里开始索引该系统以获得最佳性能。我也不确定如何最好地实现对这个设置的搜索。非常感谢任何建议、文章和示例。

编辑:

既然都说这个太笼统了,

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

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

因此,例如,我的数据可能是(类型、名称、站点 ID)

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

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

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

【问题讨论】:

  • 这太宽泛了,无法在这里回答。您可能想研究 Solr、SolrCloud、ElasticSearch 或 Sensei。
  • 这些很好,但我不能使用它们。权力要我只使用 Lucene.net。
  • 您不只是在每个文档中添加一个 SiteID 字段,并始终将其作为查询的一部分吗?

标签: lucene.net lucene


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-05
    • 2015-07-08
    • 1970-01-01
    • 2012-03-04
    • 2012-03-16
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    相关资源
    最近更新 更多