Возврат только определенных полей из Lucene Search - PullRequest
3 голосов
/ 27 января 2012

Я использую Lucene для поиска по индексу, и он работает нормально. Моя единственная проблема в том, что мне нужно только одно конкретное поле того, что возвращается. Можете ли вы указать Lucene возвращать только определенное поле в результатах, а не весь документ?

Ответы [ 3 ]

9 голосов
/ 28 января 2012

Вот почему существует класс 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());

Если вы заинтересованы в загрузке поля small , это не позволит загрузить поля large , что, в свою очередь, означает ускорение загрузки документов. Я думаю, что вы можете найти гораздо более подробную информацию, если поискать.

0 голосов
/ 28 января 2012

Да, вы определенно можете делать то, что просите. Все, что вам нужно сделать, это включить имя поля (с учетом регистра) в метод document.get ().

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

К вашему сведению, обычно хорошей идеей является включение некоторого кода в ваши вопросы. Это облегчает предоставление хорошего ответа.

0 голосов
/ 27 января 2012

Что значит "вернуть определенные поля"? Функция Document.get () возвращает только поле, которое вы запрашиваете.

...