我正在使用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)
的每个用法吗?我问这个是因为我的索引和搜索任务是在不同的类中,我想保留我在实例中传递的最少数量的对象。
答案 0 :(得分:0)
您绝对可以使用同一分析器/标记器的不同实例。
唯一的要求是确保它们在搜索和索引期间以相同的方式完全(例如,应该使用相同的对象构造函数,具有相同级别的数据访问等)。