归类 : SpringBoot

通过 Hibernate Search 创建 Lucene 全文索引

Hibernate Search完全可以满足小型的网站的全文搜索需求,本文对SpringBoot 2.0 下Hibernate Search的使用进行一些简单的介绍

Hibernate Search + Lucene

Lucene是一个全文搜索引擎,Hibernate Search 基于Lucene,无需手动编写Lucene代码即可进行Hibernate操作,会自动创建索引、修改索引、删除索引。

pom.xml

        <!--hibernate search orm -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-search-orm</artifactId>
            <version>5.9.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-search-engine</artifactId>
            <version>5.9.0.Final</version>
        </dependency>
        <!-- 添加lucene支持 -->
        <!--核心包 -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>5.5.5</version>
        </dependency>
        <!--smartcn 中文分词器 SmartChineseAnalyzer smartcn分词器 需要lucene依赖 且和lucene版本同步 -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-smartcn</artifactId>
            <version>5.5.5</version>
        </dependency>

配置(Ubuntu运行环境下)

    spring.jpa.properties.hibernate.search.jmx_enabled = true
    spring.jpa.properties.hibernate.search.default.directory_provider = filesystem
    spring.jpa.properties.hibernate.search.generate_statistics = true
    spring.jpa.properties.hibernate.search.lucene_version = LUCENE_CURRENT
    spring.jpa.properties.hibernate.search.default.indexBase = ${user.dir}/home/indexes

注意:

  • spring.jpa.properties 前缀不可少,后面直接跟hibernate的官方配置
  • hibernate.search.default.indexBase配置索引缓存路径,其中${user.dir}不可少,很多教程没有此项,导致我在这个坑里待了很久

具体使用

请参考:https://www.mkyong.com/spring-boot/spring-boot-hibernate-search-example/

以上