Объединение результатов Lucene с результатами Entity Framework? - PullRequest
2 голосов
/ 01 апреля 2012

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

Обновление:

Полагаю, лучший способ справиться с этимсначала выполнить поиск по индексу Lucene и получить список результатов, а затем выполнить поиск EF:

Псевдокод:

var result = (from ef in EntityFrameworkList
                      where !(from l in LuceneList
                              select l.documentId)
                             .Contains(ef.Id)
                      select ef);
LuceneList.AddRange(result); 

Для тех, кто любит цепочки методов

var result = (EntityFrameworkList.Where(ef => !(LuceneList.Select(l => l.documentId))
                                                   .Contains(ef.Id)));

1 Ответ

0 голосов
/ 15 мая 2012

Мы действительно следовали подходу, который я предложил в обновлении.Следует отметить, что мы использовали это только для отображения небольших списков результатов, а не для каждого типа поиска.Для полнотекстового поиска в больших документах мы использовали только результаты Lucene, поскольку мы не храним данные FTS в нашей базе данных.

...