在lucene .net中查找字段的所有可用值

mic*_*win 3 lucene lucene.net

如果我有一个字段x,可以包含y或z等值,有没有一种方法可以查询,这样我只能返回已编入索引的值?

示例x可用的可设置值= test1,test2,test3,test4

第1项:字段x = test1

第2项:字段x = test2

第3项:字段x = test4

第4项:字段x = test1

执行所需的查询将返回以下列表:test1,test2,test4

Chr*_*ens 6

我之前已将其实现为扩展方法:

public static class ReaderExtentions
{
    public static IEnumerable<string> UniqueTermsFromField(
                                          this IndexReader reader, string field)
    {
        var termEnum = reader.Terms(new Term(field));

        do
        {
            var currentTerm = termEnum.Term();

            if (currentTerm.Field() != field)
                yield break;

            yield return currentTerm.Text();
        } while (termEnum.Next());
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以非常轻松地使用它:

var allPossibleTermsForField = reader.UniqueTermsFromField("FieldName");
Run Code Online (Sandbox Code Playgroud)

这将返回你想要的东西.

编辑:由于一些心不在焉,我正在跳过上面的第一个学期.我已相应更新代码以正常工作.