2

我有一个应用程序,我正在尝试将休眠搜索集成到其中。我正在使用休眠搜索 3.4.2。我有一个如下所示的域类:

@索引
公共组{

    @Fieldindex (index = Index.TOKENIZED, store = Store.YES)
    私有字符串组名;
}

在我的测试用例中,我创建了几个组并将它们保存到数据库中。一旦存储在数据库中,我就会创建索引,然后搜索给定的文本字符串。这似乎有效。

我遇到的问题是在创建索引后创建的任何新组都没有被索引。从我读过的内容来看,我认为一旦创建了索引,任何持久化的新项目都会自动使用新值进行索引,但这似乎不是我得到的行为。我在配置方式上有什么遗漏吗?或者我是否必须手动告诉 Hibernate Search 我添加了一个要索引的新对象?

不用说,我有点困惑......



[编辑] 我正在使用 JPA,所以我的休眠搜索配置包含在我的 persistence.xml 中,如下所示:

     
<property name="hibernate.search.default.directory_provider" value="filesystem"/>
<property name="hibernate.search.default.indexBase" value="D:\var2\lucene\indexes"/>



我可以看到索引文件已创建,我可以使用 Luke 查看内容,但当我持久保存新对象时,它们似乎永远不会更新。

4

1 回答 1

1

文档中所述“默认情况下,每次通过 Hibernate 插入、更新或删除对象时,Hibernate Search 都会更新相应的 Lucene 索引”。

我要做的是检查我的 persistence.xml 看看我是否不小心设置了hibernate.search.indexing_strategy = manual

如果不是这种情况,也许您可​​以尝试强制它,看看是否有效?

hibernate.search.indexing_strategy = 事件

您使用的是哪个框架?也许看看这个问题的最后一篇文章

// 雅各布

于 2012-05-09T13:52:59.030 回答