java – Hibernate Search,Lucene还是其他任何选择?

我有一个查询,在表11的字符串或文本字段的大小(500 000)上做ILIKE,但对于ILIKE显然太大,搜索查询需要20秒.数据库是postgres 8.4 我需要实现这个搜索要快得多. 我想到了什么: 我从所有需要搜索的列组合了另外的TVECTOR列,并在其上创建了全文索引.全文搜索速度

我有一个查询,在表11的字符串或文本字段的大小(500 000)上做ILIKE,但对于ILIKE显然太大,搜索查询需要20秒.数据库是postgres 8.4

我需要实现这个搜索要快得多.

我想到了什么:

>我从所有需要搜索的列组合了另外的TVECTOR列,并在其上创建了全文索引.全文搜索速度非常快.但是…我无法将此TVECTOR类型映射到我的.hbms中.所以这个想法掉下来了(无论如何我把它当作临时解决方案).
>休眠搜索(今天第一次听到)似乎有希望,但是我需要有经验的意见,因为我不想进入新的API,可能不是最简单的API,可以做得更简单一些.
Lucene

无论如何,现在这个表已经发生了,但是我希望解决方案更为通用,适用于与全文搜索有关的未来案例.

所有意见赞赏!

感谢名单

解决方法

我强烈建议Hibernate Search提供了一个非常简单的Hibernate和Lucene之间的桥梁. Rememeber你将在这里使用.您只需注释您希望能够搜索的域类的属性.然后,当您更新/插入/删除启用了搜索Hibernate Search的实体时,只需更新相关索引.这只有在发生数据库更改的事务被提交时才会发生,即如果回滚,则索引不会被破坏.

所以回答你的问题:

是的,您可以索引特定表上的特定列.您还可以验证字段的内容,以便您可以在字段的部分匹配.>根本不难使用,你只需要找出你想搜索的属性.告诉Hibernate在哪里保留其索引.然后可以使用EntityManager / Session接口加载您搜索的实体.

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部