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

时间:2012-11-26 07:42:03

标签: java android lucene indexing analyzer

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

或者我可以用analyzer替换new StandardAnalyzer(Version.LUCENE_36)的每个用法吗?我问这个是因为我的索引和搜索任务是在不同的类中,我想保留我在实例中传递的最少数量的对象。

1 个答案:

答案 0 :(得分:0)

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

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