使用PlayFramework搜索/Hibernate搜索的复杂全文搜索

使用PlayFramework搜索/Hibernate搜索的复杂全文搜索,hibernate,lucene,playframework,hibernate-search,Hibernate,Lucene,Playframework,Hibernate Search,假设只有两种类型的模型对象 标签 文章 文章可以有数量可变的标记,以及包含文章正文的大文本字段 如何对匹配我定义的一组标记的文章执行有效的全文搜索?例如,在100万篇文章中,对于1)匹配body:business*和2)标记为“America”、“Economy”而未标记为“Asia”的文章,高效查询(使用计数和分页支持)的最佳方法是什么 我能够分别高效地执行1)(使用HQL或普通的旧SQL)和2)(使用lucene查询),但不能同时执行这两项操作。有人有什么想法吗?你看过这个模块了吗?这是一个

假设只有两种类型的模型对象

标签 文章

文章可以有数量可变的标记,以及包含文章正文的大文本字段

如何对匹配我定义的一组标记的文章执行有效的全文搜索?例如,在100万篇文章中,对于1)匹配body:business*和2)标记为“America”、“Economy”而未标记为“Asia”的文章,高效查询(使用计数和分页支持)的最佳方法是什么


我能够分别高效地执行1)(使用HQL或普通的旧SQL)和2)(使用lucene查询),但不能同时执行这两项操作。有人有什么想法吗?

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

我不太明白你所说的“两者都在一起”是什么意思。。。SQL DB search和lucene query是两种使用不同索引数据的不同机制,因此它们的工作方式不同,返回的结果也不同。你把它们一起使用是什么意思?比如,我想过滤既有美国标签的文章(这是必须在数据库中完成的事情)也有包含世界“商业”的文章(应该在搜索引擎中完成)。我可以分别找到使用每种方法的文章,然后对结果进行交叉,但这似乎是一种非常低效的方法。通过将它们结合使用,我的意思是,如果有某种方法可以比相交结果更有效地实现这一点。是的,实现相交并不容易,而且它不会考虑两组结果的相关性。如果有办法将两者混合,我不知道:)。。。我所知道的唯一方法是将所有搜索信息存储在一个索引引擎中,例如,使用lucene对某些DB数据进行索引并没有什么不好的,因为它是为此而创建的。因此,您可以使用lucene(或其他引擎,如elastic search)搜索所有内容