繁体   English   中英

索引和搜索时,Lucene是否需要相同的Analyzer实例?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM