Lucene.net PerFieldAnalyzerWrapper - 控制索引版本

时间:2014-06-18 21:05:14

标签: lucene.net

我们使用工厂以一致的方式构建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,是否有办法控制版本?

0 个答案:

没有答案