2012-04-03 62 views
0

我正在尝试将我的Lucene搜索解决方案放在一起,而且我很难搞清楚如何启动。按多个索引编号的分区Lucene索引

  • 在我的网站上,我想要一次搜索跨越模型中5种不同类型的对象。
  • 我想我的结果回来作为一个列表,最佳匹配排序第一,有办法来区分类型,以便我可以显示适当
  • 我们的系统拆分到我们所说的网站的数据。我想通过网站为5个不同的模型对象建立索引。搜索将始终由网站完成。

我不知道从哪里开始索引此系统以获得最佳性能。我也不确定如何最好地实施搜索这个设置。任何建议,articalse,和例子,不胜感激。

编辑:

既然已经说这是过于宽泛,

比方说,我有3个站点,站点1,站点2,站点3

比方说,我索引狗,猫和仓鼠。每种类型的记录都链接到一个网站。

所以,举例来说,我的数据可能是(类型,名称,SITEID)

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

所以,当我做一搜“漂亮先生”,我想针对特定的网站ID。如果我违反网站ID 1,我会得到0结果。如果我对搜索网站的ID 3,我会得到

Mr. Pretty 
Mr. Pretty 2 

如果我搜索“洒”在现场2,我就知道一个结果是一只猫,另一结果是仓鼠。

什么是我可以去实现这种搜索索引的最佳方式?

+0

这太宽泛了,无法在这里回答。您可能需要查看Solr,SolrCloud或ElasticSearch或Sensei。 – bmargulies 2012-04-03 21:08:29

+0

这些都很好,但我不能使用它们。只需要我使用Lucene.net的权力。 – Josh 2012-04-03 21:34:31

+1

难道你不是简单地为每个文档添加一个SiteID字段,并始终让你的查询的一部分? – goalie7960 2012-04-03 22:00:40

回答

2

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

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