我需要用hibernate进行全文查询,而Hibernate Seach似乎是个不错的选择,匹配同义词等的能力也很有趣。问题是我的应用程序只执行查询,而另一个应用程序执行插入/更新/删除。我不知道“hibernate seach”是否可以维护在这种情况下更新的文本索引,如果不能,我认为在每个查询中重建索引不是一个选项(是吗?)。
在数据库中执行更新的应用程序能够为我的应用程序生成事件。这可能是刷新索引的机会...
任何建议将不胜感激。提前致谢:
卡洛斯。
我需要用hibernate进行全文查询,而Hibernate Seach似乎是个不错的选择,匹配同义词等的能力也很有趣。问题是我的应用程序只执行查询,而另一个应用程序执行插入/更新/删除。我不知道“hibernate seach”是否可以维护在这种情况下更新的文本索引,如果不能,我认为在每个查询中重建索引不是一个选项(是吗?)。
在数据库中执行更新的应用程序能够为我的应用程序生成事件。这可能是刷新索引的机会...
任何建议将不胜感激。提前致谢:
卡洛斯。
我假设这个其他应用程序不是可以触发索引更新的 Java 应用程序。在这种情况下,您确实必须确保索引正确更新。如果您可以向 Java 应用程序发送通知以触发更新,那么您已经赢得了很多。例如,如果您可以发送已更改实体的主键,则可以使用这些 id 仅更新索引中的这些实体。您不必重建整个索引。另一种方法是使用最后更新的列。当索引应用程序收到通知时,它会选择自上次触发更新以来已更改的记录。这在一定程度上取决于您的表格是什么样子以及您的要求是什么。
是的,在大多数情况下,完整索引重建时间过长。但是,如果您能够接收事件 - 这不是问题。只需在收到事件时手动重新索引实体。
顺便说一句,如果您使用 PostgreSQL 或 Oracle,请检查PostgreSQL FTS和Oracle Text。