我们使用工厂以一致的方式构建lucene分析仪,并且我们已经达到了一个转折点。
分析器构造如下所示:
public Analyzer Construct(string[] keywordFields)
{
var analyzer = new PerFieldAnalyzerWrapper(new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30));
var keywordAnalyzer = new KeywordAnalyzer();
foreach (var field in keywordFields)
{
analyzer.AddAnalyzer(field, keywordAnalyzer);
}
return analyzer;
}
我们已经达到了默认使用关键字分析器更有意义的程度,并指定了我们想要使用标记化分析器的字段,例如:
public Analyzer Construct(string[] nonKeywordFields)
{
var analyzer = new PerFieldAnalyzerWrapper(new KeywordAnalyzer());
var fullTextAnalyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
foreach (var field in nonKeywordFields)
{
analyzer.AddAnalyzer(field, fullTextAnalyzer);
}
return analyzer;
}
我注意到在用Luke查看索引时,这种方法将索引版本从lucene 3更改为lucene 2.9,这可能是也可能不是问题(可能不是)。
它仍然让我很好奇 - 据我所知,控制索引版本的唯一方法是通过分析器传递给你的索引编写器 - 有更好的方法吗?如果没有,我想知道如果我的默认分析器是KeywordAnalyzer,是否有办法控制版本?