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

Search 仅从Lucene搜索返回某些字段,search,lucene,lucene.net,Search,Lucene,Lucene.net,我用Lucene搜索索引,效果很好。我唯一的问题是,我只需要返回内容的一个特定字段。您能否指定Lucene只返回结果中的某个字段而不返回整个文档?什么是“返回某些字段”?该函数只返回您请求的字段。是的,您完全可以按要求执行操作。只需在document.get()方法中包含字段名(区分大小写) 仅供参考,在你的问题中加入一些代码通常是个好主意。这使得提供一个好的答案变得更容易。这就是类存在的原因。 您可以实现这样的类 class MyFieldSelector : FieldSelector {

我用Lucene搜索索引,效果很好。我唯一的问题是,我只需要返回内容的一个特定字段。您能否指定Lucene只返回结果中的某个字段而不返回整个文档?

什么是“返回某些字段”?该函数只返回您请求的字段。

是的,您完全可以按要求执行操作。只需在document.get()方法中包含字段名(区分大小写)

仅供参考,在你的问题中加入一些代码通常是个好主意。这使得提供一个好的答案变得更容易。

这就是类存在的原因。 您可以实现这样的类

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())


如果您对加载小字段感兴趣,这将阻止加载大字段,这反过来意味着加载文档的速度加快。我想你可以通过谷歌搜索找到更详细的信息。

这就是我现在使用的,但我只需要一个字段,所以我想知道是否有办法只返回该字段而不是整个文档。@aaron:我仍然不确定你所说的“返回”是什么意思
Document.get
的结果文本就是该字段的文本。如果您的意思是不想存储其他字段的值,只需将它们标记为未存储。-1但是
reader.Document
加载整个文档,而不仅仅是单个字段。我明白您的意思,这就是我现在正在做的。我试图限制文档中包含哪些字段。您没有问如何限制文档中包含哪些字段。您询问如何返回结果中的某个字段。我不确定你问的问题是否正确。@SharpBarb,
你问了如何在结果中返回某个字段。我不确定你的问题是否正确
请在阅读我的答案后再次阅读问题。我想我会有道理的
class MyFieldSelector : FieldSelector
{
    public FieldSelectorResult Accept(string fieldName)
    {
        if (fieldName == "field1") return FieldSelectorResult.LOAD_AND_BREAK;
        return FieldSelectorResult.NO_LOAD;
    }
}