0

我正在使用 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);

或者我可以只替换 with 的所有用法analyzernew StandardAnalyzer(Version.LUCENE_36)?我问这个是因为我的索引和搜索任务在不同的类中,我想保持最少数量的对象,我在实例之间传递。

4

1 回答 1

0

您绝对可以使用同一分析器/标记器的不同实例。

唯一的要求是确保它们在搜索和索引期间的行为完全相同(例如,应该使用相同的对象构造函数,具有相同级别的数据访问等)。

于 2012-11-26T10:18:06.810 回答