【发布时间】:2012-10-05 08:26:04
【问题描述】:
我想对我的文档中的单词进行词干处理,并将注意力集中在 KStem 上。我在 Eclipse 中工作,并通过将 lucene-core jar 文件下载到 lib 文件夹并将其添加到构建路径来配置 Lucene。我同样对 KStem jar 文件执行此操作。但是,我找不到任何关于如何在我的 java 代码中使用 KStem 库的示例或文档。我是否需要为此设置 Solr - 不完全确定它的用途。
【问题讨论】:
我想对我的文档中的单词进行词干处理,并将注意力集中在 KStem 上。我在 Eclipse 中工作,并通过将 lucene-core jar 文件下载到 lib 文件夹并将其添加到构建路径来配置 Lucene。我同样对 KStem jar 文件执行此操作。但是,我找不到任何关于如何在我的 java 代码中使用 KStem 库的示例或文档。我是否需要为此设置 Solr - 不完全确定它的用途。
【问题讨论】:
您只需将 KStem 配置为由 Lucene / SOLR 在您的架构中拾取(在将包含您的文档内容的字段类型中),并且只发送文档以从您的代码中进行索引。其余的魔法(包括标记化/词干提取/停用词删除等)发生在 Lucene / SOLR 内部(取决于您配置它们以应用于您的文档的处理步骤)。请参阅如何在 SOLR 中配置 KStem:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters/Kstem
简而言之,Lucene 是强大的索引和检索库,用于 SOLR 内部,而 SOLR 又是成熟的搜索服务器。
如果您需要分面搜索、自动完成、分片、复制等功能,请安装和配置 Solr。如果不是,例如,如果您的目标是拥有一些相对较小的文档索引,可以快速重新构建,并且您希望在自己的应用程序中组织搜索,那么将 Lucene 用作 Java 库。
如何在自己的代码中使用 KStemmer:
private final KStemmer stemmer = new KStemmer();
// char[] term = ...
stemmer.stem(term, len);
您必须自己将文档内容拆分为术语列表。
这是在 Lucene 中使用 KStemmer 的方式:http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/en/KStemFilter.java
请注意,KStemmer 类是 Lucene 当前主干 (org.apache.lucene.analysis.en) 的一部分:http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/analysis/common/src/java/org/apache/lucene/analysis/en/KStemmer.java
【讨论】: