2016-08-09 4 views
0

Я использую поиск Lucene.net и мой хэш-таблица выглядит следующим образом:поиска Lucene.net только для отдельного столбца значений

ID | Customer | Update 
1  | name1  | hello 
1  | name1  | hello again 
2  | name2  | how r u 
3  | name3  | hi 
3  | name3  | it is not working 

То, что я хочу, когда я ищу «привет» Я получаю список результатов отчетливым по ID:

ID | Customer | Update 
1  | name1  | "hello" 

мне не нужен столбец обновления, чтобы быть в результате (для этого я не забочусь, которые обновление ID 1 будет в результате), я просто хочу для поиска. Единственный результат, который мне нужен - это ID и имя клиента. Я знаю, что могу это сделать, используя result.DistinctBy(res => res.Id) от MoreLINQ, но я хочу IndexSearcher искать только для значений идентификатора. Есть ли способ достичь этого, не вызывая LINQ по результатам? Может быть, использовать фильтр аргументов пользователя?

Спасибо за вашу помощь

ответ

0

Там нет никакого способа (что я знаю) иметь Lucene отчетливые внутренне.

Однако существует более эффективный подход.

Метод Linq означает, что вы должны полностью проектировать свои строки/объекты, которые могут быть дорогими, если в реальной вещи больше полей.

Если вы добавите сортировку запроса так, чтобы Lucene возвращала документы в порядке id, вы могли просто проецировать id, а рекламное объявление проецировать остальную часть документа, если идентификатор отличается от предыдущего.

Это нестандартный метод, но это довольно нормально.

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