1

假设我们有一个Foo包含各种数据字段的实体,其中一个是List<Bar>. 反过来, Bar 具有各种数据字段,其中一个是List<Snafu>. 我们希望为用户提供一个输入字段,允许他们对持久的 Foo 记录进行通用搜索。例如,他们搜索test并找到一条 Foo 记录,该记录有一个 Bar,该 Bar 有一个 Snafu,其数据字段包含字符串“test”。

是否可以有效地进行这种搜索,还是需要不同的技术(例如 Lucene)?

4

2 回答 2

3

是的,你应该看看使用 lucene。

hibernate-search 库(由 lucene 提供支持)非常容易在带有注释的实体上启动和运行,并且非常适合 hibernate 项目。

http://www.hibernate.org/subprojects/search.html

于 2013-04-22T19:58:43.000 回答
0

如果仅找出对 的引用就足够了Foo,则可以创建一个数据库视图,其中包含所有引用表中的记录。为这样的视图编写 SQL 将非常简单。

否则,您可以查看 Lucene(如 rhinds 指出的那样),但这意味着您必须将数据库数据复制到其他地方。另一方面,搜索会更强大(例如,Lucene 与 DB 不同,可以轻松处理拼写错误)。

于 2013-04-23T17:40:48.787 回答