2012-02-14 82 views
2

我有它运行2个核一个Apache Solr的安装:Apache Solr实现 - 同时搜索多个不同的核(具有不同的文档结构核)

  • 的机芯
  • 的通知核心

每个核心索引一个数据库表,因此核心的内容是完全不同的 - 按结构和实际内容 现在我想在两个核心上运行搜索查询,最后从2中获取单个结果集核心c ombines。对于一个微不足道的例子,如果我要搜索“2010”,我希望我的结果成为相关的机器文档和通知文档,每个文档都来自它自己的核心,但作为结果集组合在一起,按相关性排序。 预期结果集例如:

  • 机#1
  • 机#2
  • 通知#1
  • 机#3
  • 通知#2
  • 通知#3
  • 机# 4

我将通过SolrJ [Java连接器]与Solr进行交互。

有没有人有什么想法?我正在努力做甚么?

谢谢!

+0

检出此问题:http:// stackoverflow。com/questions/2139030/search-multiple-solr-cores-and-return-one-result-set – 2012-02-14 10:21:52

+0

我已阅读关于分布式搜索,但它不意味着分片?这意味着每个核心具有完全相同的文档结构,只有数据是不同的? – 2012-02-14 10:25:50

+0

分布式搜索确实意味着分享,但是如果您阅读问题和评论的最佳答案,则说明您可以拥有不同的文档结构,这正是您所问的内容。 – 2012-02-14 14:17:51

回答

0

如果声明为“我有一个电子商务门户,我在那里销售书籍,电影,音乐等和多个solr核心,每个都搜索其中一个”,则问题类似。说一个书名也许是一个电影名称,但是如果要从多个完全不同的模式中检索结果,如何解决排名/关联难题?

对于这个Solr不会帮你带出一些东西。你将不得不建立一些智慧的人群或集体智慧算法来重新排名,并在你的每一个核心回报之上做相关的事情。

+0

所以,如果我想要我在问题中描述的行为,我将不得不手动搜索每个核心,一次一个? [我的问题中的2个核心只是一个例子,我原本计划有10个核心,每种类型的索引数据库实体都有一个] – 2012-02-14 10:29:54

+0

绝对不是!您的搜索查询将自动转到每个核心,但当结果返回时(因为它们来自完全不同的模式,如您所说),那么您需要一种机制来重新排列它们。我的意思是说,你可以从一个核心任务不可能的电影和其他书籍核心任务不可能的书中获得。那么你需要决定在另一个之前放置哪一个。对于这个Solr可以帮助你,但你需要拥有智慧的人群/集体智慧算法来决定如何对它们进行排名。 – Yavar 2012-02-14 10:33:05

+0

谢谢你,Yavar!对不起,如果我看起来太坚持我的问​​题,这是我第一次与Solr合作。虽然我想问你两件事情,如果这是可以的:除了皇冠/集体排名算法,是否有任何方法来实现在多个核心上进行搜索的分页,因为我不得不重新注册结果?如果像你说的那样,结果是从不同模式的不同核心返回的,那么在结果集中有不同结构的文档作为我在原始问题中给出的例子?再次感谢您的时间! – 2012-02-14 10:42:45

0

核心的内容是完全不同的 - 通过结构和实际内容

,我想我的结果是相关的机器的文件和通知文件,分别从自己的核心,但作为结果集组合

意味着可能有一些共同的字段为这两个核心并且您希望它们显示在组合结果集中。

我建议创建一个新的核心与这些共同的领域。唯一的缺点是您必须将机器和通知索引到两个核心。