gpt4 book ai didi

java - 如何为只读数据库表建立索引搜索?

转载 作者:行者123 更新时间:2023-12-02 07:57:02 24 4
gpt4 key购买 nike

我正在构建一个 WebService(带有 Spring 和 JPA 的 CXF)来搜索只读数据库表,即数据库中的表我只有读取权限,我不能更改其中的任何内容。

我需要对这个表的某些字段实现全文检索,查询速度太慢(这是一个图书数据库,每本书都有书名、作者和关键词),所以我需要为它建一个索引它。

我试图了解 Hibernate Search 是否可以帮助我解决这个问题,以及我该如何解决这个问题。我认为这不会导致文档说它会在更新实体时构建索引(在我的 WebService 中从来不是这种情况)。但我对它的所有术语都很陌生,所以我可能会误解一些东西。

解决这个问题的好方法是什么?我应该先学习什么才能更好地了解我需要做什么?提前致谢!

最佳答案

我认为 Hibernate Search 非常适合您的问题,因为它允许您在文件系统上构建/保留索引。这样数据库就保持不变。鉴于您已经在使用 JPA,启用 Hibernate Search 应该非常容易。您基本上只需要获取 Hibernate Search jar 文件并将其添加到您的项目中,然后使用 @Indexed 注释您想要索引的实体,并使用 @Field 注释您想要索引的字段。当然,这非常简单,但是在线文档应该可以帮助您。有一个入门部分解释了基础知识。一旦掌握了这一点,您就可以更深入地研究不同的分析器等 - http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/

I'm trying to understand if Hibernate Search help me with that, and how I could go about it. I think it can't cause the documentation says it builds the index when the entities are updated (which are never the case in my WebService). But I'm new to all of its terminology, so I can misinterpreting things.

嗯,搜索将通过自动索引更新帮助您保持索引和数据库同步以供读/写应用程序使用。但是,搜索还有一个编程 API,用于创建初始索引或在您认为合适时手动重建索引。有多种方法可以做到这一点,但它可以很简单:

EntityManager em = entityManagerFactory.createEntityManager();
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
fullTextEntityManager.createIndexer().startAndWait();

同样,文档中有更多示例。我建议您遵循入门示例并跟进您遇到的具体问题。

关于java - 如何为只读数据库表建立索引搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9485168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com