2011-05-01 199 views
0

假设只有两种类型的模型对象。复杂全文搜索使用PlayFramework搜索/ Hibernate搜索

标签 文章

条可以具有可变数量的标签,以及包含该项目的主体的大型文本字段。

如何对与我定义的一组标签匹配的文章执行高效的全文本搜索?例如,在一百万篇文章中,对于1)匹配body:business *和2)的文章,有效查询(包括计数和分页支持)的最佳方式是标记为“America”,“Economy”,并且不标记为“亚洲”?

我能够有效地做1)(使用HQL或普通的旧SQL)和2)(使用lucene查询)分开,但不是两个在一起。任何人有一些想法?

+0

我不确定要理解“两者都在一起”是什么意思...... SQL数据库搜索和lucene查询是使用不同索引数据的两种不同机制,因此它们的工作方式不同,并返回不同的结果。你一起使用它们是什么意思? – mandubian 2011-05-02 09:00:17

+0

因为我想过滤那些同时用美国标签(这是必须在数据库中完成的事情)和包含世界“商业”(应该在搜索引擎中完成)的文章。我可以分别使用每种方法找到文章,然后将结果交叉在一起,但这似乎是一种非常低效的方法。通过一起使用它们,我的意思是如果有某种方式可以更有效地实现这一点,而不是交叉结果。 – Tony 2011-05-03 07:21:56

+0

是的,要实现交叉并不容易,也不会考虑两组结果的相关性。如果有两种方法可以混合使用,我不知道:)...我知道的唯一方法是将所有搜索信息存储在一个索引引擎中,并且没有什么能够用例如lucene索引某些数据库数据,例如,已经为此创建。因此,您可以使用lucene(或其他引擎,如弹性搜索)搜索所有内容, – mandubian 2011-05-03 09:11:48

回答

1

你看过Elastic Search模块吗?这是一个非常强大的模块,模块所有者已经完成了大量工作记录他的工作。