Dspace之中文检索

Dspace 是采用 Lucene 作为它的检索引擎, 来看看如何增加其对中文及全文检索的支持。

 

一 、 中文检索

 

1.  增加中文分词器

 

    Lucene 2.3.2 也已采用 maven 来管理了,分了很多模块。Dspace 中依赖的包 lucene-core-2.3.0.jar

中仅有 standardAnalyzer ,只能检索英文。要想检索中文,需要引用 lucene-contrib 下的analyzers。 

在Dspace-api 模块的pom配置文件中增加 analyzers 依赖项:

 

Java代码 
  1. <groupId>org.apache.lucene</groupId>  
  2.    <artifactId>lucene-analyzers</artifactId>  
  3. </dependency>  

 

然后到系统当前用户 [/.m2/repository/org/dspace/dspace-parent/1.5.1-SNAPSHOT] 目录下找到

dspace-parent-1.5.1-SNAPSHOT.pom 文件,增加 analyzers 依赖:

 

Java代码 
  1. <dependency>  
  2.    <groupId>org.apache.lucene</groupId>  
  3.    <artifactId>lucene-analyzers</artifactId>  
  4.    <version>2.3.0</version>  
  5. </dependency>  

 

 

2.  修改 dspace-config 配置文件,设置中文分词器为 ChineseAnalyzer:

 

Java代码 
  1. # Chinese analyzer  
  2. search.analyzer = org.apache.lucene.analysis.cn.ChineseAnalyzer  

 

 dspace-assemble 重新编译后运行,可以看到中文检索的效果。

 

3.  说明

 

    可以通过如下cmd命令行来重新建立索引,需要将[dspace]/search/ 目录下的索引文件先清空。

 

Java代码 
  1. dsrun org.dspace.search.DSIndexer  

 

    Dspace1.5 中命令行的执行请见 “Dspace1.5 在 Eclipse 中的集成”。 

 

    尽管实现了中文检索的功能,但还是比较弱的。ChineseAnalyzer,CjkAnalyzer 是Lucene contrib 中

提供的中文分词器,可以考虑其他中文分词器,如 庖丁 和 IKAnalyzer ,性能可能会好些。

 

 

二、 全文检索

 

1.  配置 [dspace]/config/dspace.cfg 文件

 

    在dspace.cfg中有过滤器插件的配置,过滤器的作用是将对应的文件转换成能够索引的 txt 文本文件。Dspace目前支

持pdf、word、html、txt 这几种类型的文件。

 

Java代码 
  1. #Names of the enabled MediaFilter or FormatFilter plugins  
  2. filter.plugins = PDF Text Extractor, HTML Text Extractor, /  
  3.            Word Text Extractor, JPEG Thumbnail  

 

 

2.  执行CMD命令建立索引

 

Java代码 
  1. dsrun org.dspace.app.mediafilter.MediaFilterManager  

 

    这条命令会调用配置文件中设置的过滤器完成对相应文件的转换(transform to txt)并基于txt文件建立全文索引。索

引完成后就可以在首页默认的搜索栏内、或高级检索中搜索类型选为关键字的时候进行全文检索了。

 

    Dspace1.5 中命令行的执行请见 “Dspace1.5 在 Eclipse 中的集成”。 

 

3.  每次新增文件都需要重新执行cmd命令来reindex,这可以通过加入Quartz 等调度框架来实现任务的定时自动执行。

 

你可能感兴趣的:(java,eclipse,quartz,cmd,Lucene,全文检索)