我正在努力整理我的Lucene搜索解决方案,而我却无法弄清楚如何开始。
我不知道从哪里开始索引此系统以获得最佳性能。我也不确定如何最好地实现搜索此设置。任何建议,艺术和例子都非常感谢。
编辑:
因为有人说这太宽泛了,
假设我有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”,我会知道一个结果是猫,另一个结果是仓鼠。
实现这种搜索索引的最佳方法是什么?
答案 0 :(得分:2)
正如goalie7960建议的那样,您可以为每个文档添加“SiteID”,并在查询中添加siteid:3
等查询字词,以便仅从此网站检索文档。您还可以通过为每个不同的站点创建和存储Filter来提高性能,以便将其应用于对应的查询。
关于同一索引中的不同类型,您可以使用相同的策略。为每个具有相应类型(可能只是ID)的文档创建“类型”字段。 Elasticsearch使用相同的策略在同一索引中具有不同的可区分类型。同样,您可以在类型上使用过滤器来加速查询(Elasticsearch也会这样做)。