0

现在我有一种情况,我需要进行一些比较和结果过滤,这不是很简单,我想要的是类似 Lucenes 搜索但只有我会开发它,这不是我的决定,虽然我会选择 Lucene .

我要做的是:

  1. 根据某个字段的全词匹配查找元素,如果没有则检查它是否以它开头,检查它是否只包含。
  2. 每个字段根据匹配大小写(完整->开始->包含)及其对我的优先级都有其权重。
  3. 匹配后,我还将检查其他字段的权重,以得出最终的总行权重。
  4. 然后我将返回两行及其权重的 Map。

现在我意识到 Hibernate 的 HQL 并不容易做到这一点,这意味着我必须运行多个查询才能做到这一点。

所以我的问题是我应该在java中执行它,意思是我应该检索所有记录并进行计算以找到我的目标,还是应该通过执行多个查询在休眠中执行它?根据性能和速度哪个更好?

4

1 回答 1

0

不幸的是,我认为正确的答案是“视情况而定”:有多少字,什么数据结构,数据是否适合内存,你必须多久进行一次搜索,等等。

我倾向于认为数据库是更好的解决方案,即使 Hibernate 不是其中的一部分。您可能需要学习如何编写更好的 SQL。也许 Hibernate 为您生成的动态 SQL 是不够的。正确的 JOIN 和索引可能会使其表现良好。

可能还有第三种方式需要考虑:Lucene 和索引。我需要更多地了解您的问题才能做出决定。

于 2013-04-23T10:02:59.667 回答