我想阻止我文档中的单词,并把注意力集中在 KStem 上。我在 Eclipse 中工作,并通过将 lucene-core jar 文件下载到 lib 文件夹并将其添加到构建路径来配置 Lucene。我同样对 KStem jar 文件执行此操作。但是,我找不到任何关于如何在我的 java 代码中使用 KStem 库的示例或文档。我是否需要为此设置 Solr - 不完全确定它的用途。
1 回答
您只需将 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