2012-01-27 2 views
3

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

ответ

9

Именно поэтому 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());

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

-2

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

+0

Это то, что я использую сейчас, но мне нужно только одно поле, поэтому мне просто интересно, есть ли способ вернуть это поле вместо всего документа. – aaronj

+0

@aaron: Я до сих пор не уверен, что вы подразумеваете под «возвращением». Полученный текст из 'Document.get' - это только текст этого поля. Если вы имеете в виду, что не хотите сохранять значения других полей, просто отметьте их как не сохраненные. – Xodarap

+0

-1 но 'reader.Document' загружает весь документ, а не только одно поле –

-2

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

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

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

+0

Я получаю то, что вы говорите, и это то, что я делаешь сейчас. Я пытаюсь ограничить, какие поля включены в документ. – aaronj

+0

Вы не спросили, как ограничить, какие поля включены в документ. Вы спросили, как вернуть определенное поле в результаты. Я не уверен, что вы задаете правильный вопрос. – SharpBarb

+0

@SharpBarb, 'Вы спросили, как вернуть определенное поле в результаты. Я не уверен, что вы отвечаете на правильный вопрос. Пожалуйста, снова прочитайте вопрос после прочтения моего ответа. Я думаю, что я буду иметь смысл тогда –

Смежные вопросы