0

我正在尝试整合我的 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”,我会知道一个结果是猫,另一个结果是仓鼠。

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

4

1 回答 1

2

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

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

于 2012-04-04T19:36:24.040 回答