多个索引的交叉搜索结果Lucene有效

时间:2013-01-21 09:33:58

标签: java lucene hibernate-search

我有两个Lucene索引(版本3.5.0),我将使用Hibernate Search编写。我需要实现一个搜索,它返回一个结果,该结果是各个索引上结果的交集(AND)。主要问题是个别结果和最终结果都可能非常大,因此组合应该是有效的。 有没有一种有效的方法来做到这一点? MultiReader可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

  1. MultiReader是跨多个索引进行搜索的简便方法。
  2. 使用索引标记每个Lucene文档可能是最快的解决方案;像index:globalindex:local之类的东西(如果你有globallocal索引)。例如,查询“异常”可能如下所示:

    (例外和索引:全局)或(例外和索引:本地)

  3. 之后,您将对两个索引中出现的Lucene文档过滤搜索结果。

    请注意,您无法执行天真的查询:

    exception AND (index:global AND index:local)
    

    因为将有0(零)个Lucene文档同时具有index:globalindex:local值。