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.mem
和 coredict.mem
,大概是一个扩展字典,由于性能问题而不是标准使用,所以这可能也值得尝试。
关于java - `lucene 5.0.0` 的 SmartChineseAnalyzer 可以指定或添加我的自定义词典吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618789/