Dspace 是采用 Lucene 作为它的检索引擎, 来看看如何增加其对中文及全文检索的支持。
一 、 中文检索
1. 增加中文分词器
Lucene 2.3.2 也已采用 maven 来管理了,分了很多模块。Dspace 中依赖的包 lucene-core-2.3.0.jar
中仅有 standardAnalyzer ,只能检索英文。要想检索中文,需要引用 lucene-contrib 下的analyzers。
在Dspace-api 模块的pom配置文件中增加 analyzers 依赖项:
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers</artifactId>
</dependency>
然后到系统当前用户 [\.m2\repository\org\dspace\dspace-parent\1.5.1-SNAPSHOT] 目录下找到
dspace-parent-1.5.1-SNAPSHOT.pom 文件,增加 analyzers 依赖:
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers</artifactId>
<version>2.3.0</version>
</dependency>
2. 修改 dspace-config 配置文件,设置中文分词器为 ChineseAnalyzer:
# Chinese analyzer
search.analyzer = org.apache.lucene.analysis.cn.ChineseAnalyzer
dspace-assemble 重新编译后运行,可以看到中文检索的效果。
3. 说明
可以通过如下cmd命令行来重新建立索引,需要将[dspace]/search/ 目录下的索引文件先清空。
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 这几种类型的文件。
#Names of the enabled MediaFilter or FormatFilter plugins
filter.plugins = PDF Text Extractor, HTML Text Extractor, \
Word Text Extractor, JPEG Thumbnail
2. 执行CMD命令建立索引
dsrun org.dspace.app.mediafilter.MediaFilterManager
这条命令会调用配置文件中设置的过滤器完成对相应文件的转换(transform to txt)并基于txt文件建立全文索引。索
引完成后就可以在首页默认的搜索栏内、或高级检索中搜索类型选为关键字的时候进行全文检索了。
Dspace1.5 中命令行的执行请见 “Dspace1.5 在 Eclipse 中的集成”。
3. 每次新增文件都需要重新执行cmd命令来reindex,这可以通过加入Quartz 等调度框架来实现任务的定时自动执行。