将Lucene结果与实体框架结果相结合



显然,数据库中的更改不会一直反映索引中的内容。是否有人将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)));

我们确实遵循了我在更新中建议的方法。需要注意的一点是,我们只将其用于显示小的结果列表,而不是用于每种类型的搜索。对于较大文档的全文搜索,我们只使用Lucene结果,因为我们没有在数据库中存储FTS数据。

最新更新