Lucene中的多索引搜索(休眠搜索)

时间:2009-07-08 15:05:47

标签: full-text-search lucene hibernate-search

官方Lucene Feautures网站指出lucene支持“使用合并结果进行多索引搜索”。

有可能以某种方式使用hibernate搜索吗?

我的用例:Aricle with Comments。我想要两个单独的索引:一个用于文章,一个用于评论。我希望能够通过其中一条评论中的匹配找到文章。从用户的角度来看,我希望搜索“查看”文章文本及其评论并返回文章列表。 (我知道我可以通过将所有注释存储在文章文档中的字段来实现这一点,但我想在评论中对搜索应用过滤器。)

甚至可能使用原生Lucene或I / m完全忽略这一点?

2 个答案:

答案 0 :(得分:4)

你的整个解释似乎含糊不清。 Hibernate Search似乎非常适合您的用例,前提是您有一个合适的域模型,这意味着通过OneToMany关联以某种方式链接到注释的文章。如果文章和评论之间没有关系,你怎么知道评论属于哪一篇文章?

拥有这样的域模型将解决您的用例 - 能够在文章和评论中搜索,但返回文章列表。

也就是说,可以为Article和Comment保留单独的Lucene索引。实际上,如果将@Indexed添加到每个类,则每个类创建一个索引。但是,搜索变得更加复杂。

我建议在文章中使用@Indexed,与文章中的注释有正确的映射关系,并在其上使用@IndexedEmbedded。

如果您想要更多hel,您必须发布您的域模型或提供有关您的需求/用例的更多信息。

- 哈迪

答案 1 :(得分:2)

为每篇文章提供ID会更容易。然后将评论存储在文章之外,但是带有一个字段,告诉您评论的内容。搜索两个索引(或使用名为“article”和“comment”的不同字段的相同索引),然后合并文章ID。这样,您可以单独设置文章查询和评论查询结果的过滤器。