使用infinispan进行Hibernate搜索,如何将索引存储在持久性缓存存储中

时间:2016-06-20 10:25:29

标签: hibernate-search infinispan

Hibernate在内存中搜索默认的infinispan配置存储索引,一旦关闭应用程序,就必须重新编制索引。

我读过infinispan文档,有一种方法可以将索引存储到infinispan文件存储中。在谷歌周围搜索后,我仍然不知道如何配置它。

1 个答案:

答案 0 :(得分:5)

您可以查看Infinispan用户指南第5章(持久性)和第16章(Infinispan作为Lucene索引的存储)。章节编号来自Infinispan 8.2。 Hibernate搜索还提供了一个" default-hibernatesearch-infinispan.xml"文件开头。您基本上需要为元数据和实际索引缓存添加持久性。这是我用于索引缓存的那个:

    <distributed-cache name="LuceneIndexesData" mode="SYNC" remote-timeout="25000">
        <transaction mode="NONE"/>
        <state-transfer enabled="true" timeout="480000" await-initial-transfer="true"/>
        <indexing index="NONE"/>
        <locking striping="false" acquire-timeout="10000" concurrency-level="500" write-skew="false"/>
        <eviction max-entries="-1" strategy="NONE"/>
        <expiration max-idle="-1"/>
        <persistence passivation="false">
            <jdbc:string-keyed-jdbc-store preload="true" fetch-state="true" read-only="false" purge="false">
                <jdbc:data-source jndi-url="java:comp/env/jdbc/..."/>
                <jdbc:string-keyed-table drop-on-exit="false" create-on-start="true" prefix="ISPN_STRING_TABLE">
                    <jdbc:id-column name="ID" type="VARCHAR(255)"/>
                    <jdbc:data-column name="DATA" type="MEDIUMBLOB"/>
                    <jdbc:timestamp-column name="TIMESTAMP" type="BIGINT"/>
                </jdbc:string-keyed-table>
                <property name="key2StringMapper">org.infinispan.lucene.LuceneKey2StringMapper</property>
                <write-behind/>
            </jdbc:string-keyed-jdbc-store>
        </persistence>
    </distributed-cache>

此示例使用JDBC,因为它适用于动态集群。你需要替换&#34; jdbc:string-keyed = jdbc-store&#34;使用&#34;文件存储&#34;如果要将索引存储为文件。