[英]Does Lucene need the same Analyzer instance when indexing and when searching?
我正在使用Lucene在Android中创建字典应用程序。 索引和搜索时是否需要提供相同的StandardAnalyzer
实例,还是可以只为两者提供一个新实例?
例如,当我要创建索引时,请执行以下操作:
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
IndexWriter writer = new IndexWriter(directory,
new IndexWriterConfig(Version.LUCENE_36, analyzer));
然后,当在顶级文档中获得搜索词的最佳片段时,我这样做:
TokenStream ts = TokenSources.getAnyTokenStream(indexSearcher.getIndexReader(),
hits[i].doc, "definition", analyzer);
还是可以仅用new StandardAnalyzer(Version.LUCENE_36)
替换analyzer
所有用法? 我之所以这样问,是因为我的索引和搜索任务位于不同的类中,并且我希望在实例之间传递的对象数量最少。
您绝对可以使用同一分析器/令牌器的不同实例。
唯一的要求是确保它们在搜索和索引编制期间的行为完全相同 (例如,应使用相同的对象构造函数,具有相同级别的数据访问权限,等等)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.