从Lucene搜索中仅返回某些字段

k3bvogb1  于 2022-11-07  发布在  Lucene
关注(0)|答案(3)|浏览(268)

我正在使用Lucene搜索索引,它运行得很好。我唯一的问题是,我只需要返回一个特定的字段。您可以指定Lucene只返回结果中的某个字段,而不是整个文档吗?

vmdwslir

vmdwslir1#

这就是FieldSelector类存在的原因。

class MyFieldSelector : FieldSelector
{
    public FieldSelectorResult Accept(string fieldName)
    {
        if (fieldName == "field1") return FieldSelectorResult.LOAD_AND_BREAK;
        return FieldSelectorResult.NO_LOAD;
    }
}

并将其用作indexReader.Document(docid,new MyFieldSelector());
如果你对加载一个 * 小 * 字段感兴趣,这将防止加载 * 大 * 字段,这反过来意味着加载文档的速度加快。我想你可以通过谷歌搜索找到更详细的信息。

g6baxovj

g6baxovj2#

“返回某些字段”是什么意思?Document.get()函数只返回您请求的字段。

igetnqfo

igetnqfo3#

是的,你完全可以做到你所要求的。你所要做的就是在document.get()方法中包含字段名(区分大小写)。

string fieldNameText = doc.Get("fieldName");

仅供参考,在问题中包含一些代码通常是一个好主意。这样可以更容易地提供一个好的答案。

相关问题