Lucene+hibernateSearch入门

目标:
通过hibernate search 创建 lucene全文索引

原理:
Hibernate Search是给Hibernate持久化模型架构来使用的一套全文检索工具,其全文检索依赖于Lucence引擎。全文搜索引擎(lucence)会将你要查询的这个字段的词语,进行分词,直接匹配分词。

举例:
比如你要查询name字段的值(101张三丰),索引库中保存数据的时候,搜索引擎会自动将值(需要指定分词)进行分词(引入分词器—分词规则方案),分词后的结果往索引库中存放。现在你要进行模糊查询,要查询:含有张三,—-》不查数据库,查询搜索引擎,有没有张三,找到id,101,然后再拿这个id(主键索引),到数据库查询,模糊的功能是搜索引擎提供的,得到是数据库数据编号,完整数据还是数据库提供的,根据id查询。

案例:
1引入Maven坐标(引入hibernate search和IK分词器的jar包)

<properties>
        <hibernate-search.version>3.4.2.Finalhibernate-search.version>
         <IKAnalyzer.version>3.2.8IKAnalyzer.version> properties>

<dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-searchartifactId>
            <version>${hibernate-search.version}version>
        dependency>
  
        <dependency>
          <groupId>IKAnalyzergroupId>
          <artifactId>IKAnalyzerartifactId>
          <version>${IKAnalyzer.version}version>
        dependency>   

注意:lucence版本必须和Hibernate版本对应!
IK分词器项目,maven的官方仓库中貌似没有,我这里使用的开源中国的私服
现在Maven官方仓库有了:


<dependency>
    <groupId>com.janeluogroupId>
    <artifactId>ikanalyzerartifactId>
    <version>2012_u6version>
dependency>

2IK分词器的配置:
将IKAnalyzer.cfg.xml和stopword.dic复制到src/resources下.

3索引存放的基础目录配置

<prop key="hibernate.search.default.indexBase">e:/indexprop>

4索引的内容配置(通过注解方式配置实体类,可对哪些数据进行索引)
@Indexed //hibernatesearch,将该类型的对象建立索引,放到luncene中
@DocumentId//数据表的主键字段对应的属性
@Field//对该字段的生成索引
@Analyzer//引入IK分词器

5Hibernate Search是基于lucence的,无需手动编写lucence代码即可进行Hibernate操作,会自动创建索引、修改索引、删除索引。所以这里重启服务器,查看索引

你可能感兴趣的:(全文检索)