java - `lucene 5.0.0` 的 SmartChineseAnalyzer 可以指定或添加我的自定义词典吗?

标签 java solr lucene

lucene的cnsmart中文分析器性能不错。
但是,在特定领域,我需要扩展它的字典。
请问cnsmart是否支持添加自定义词典或替换现有词典?

最佳答案

SmartChineseAnalyzer 仍处于实验阶段,我没有找到指定在何处提取自定义词典的好方法。它有一些 Hook ,如果您查看 AnalyzerProfile看起来您应该能够通过“analysis.data.xml”加载自定义词典。目录”系统属性。来自来源:

// Try the system property:-Danalysis.data.dir=/path/to/analysis-data
ANALYSIS_DATA_DIR = System.getProperty("analysis.data.dir", "");

但是,查看 WordDictionary 源代码,看起来它(仍然)仅在嵌入词典加载失败时才加载。由于它嵌入在 jar 中,因此通常不会出现故障。

考虑到所有这些,使用您自己的字典的最简单方法可能是获取 lucene-analyzers-smartcn-5.0.0.jar,解压它,替换 org/apache/lucene/analysis/cn/smart/hhmm/coredict.mem 用你的字典,然后重建 jar。

参见 LUCENE-1817 : it is impossible to use a custom dictionary for SmartChineseAnalyzer对此进行一些讨论。相当旧,但再次查看源代码,看起来那里所说的一切仍然适用。

所有这些都假设您的字典采用分析器可读的格式。在 jar 中有一个 bigramdict.memcoredict.mem,大概是一个扩展字典,由于性能问题而不是标准使用,所以这可能也值得尝试。

关于java - `lucene 5.0.0` 的 SmartChineseAnalyzer 可以指定或添加我的自定义词典吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618789/

相关文章:

database - Lucene 查询语法搜索

java - 从 CQ5.5 索引中获取搜索词建议

java - 运行 servlet 需要哪个 JRE。服务器 JRE 还是客户端 JRE?

java - 为什么 try/catch block BufferedWriter 需要括号

Solr + DIH + Tika : indexing huge amount of files, 如何处理删除的文件?

solr - 来自 Solrj 的引用格式 json

lucene - 如何在 Lucene 中对类似文档进行评分?

java - javax.mail.Session有什么用?

java - 调用使用 Java ASM 添加的方法时出现 ClassFormatError 错误

solr - 如何提高 MapReduce 中 Solr 索引构建时间的速度