ldqk / Masuit.LuceneEFCore.SearchEngine

基于EntityFrameworkCore和Lucene.NET实现的全文检索搜索引擎
https://masuit.org/1437
MIT License
488 stars 117 forks source link

关于DeleteIndex,调用后数据库中的条目虽然删除,但是通过/Home/Index还是可以查询出该数据 #20

Closed yangbocheng closed 2 years ago

yangbocheng commented 2 years ago

请教博主,不知道我是否用法不对 sample中也是这个现象 实测不管是删除,还是update,都会在索引中多一个新条目,而不会删除之前的旧索引 image

所以我目前直接在控制器中提供了一个action,用于完全重置索引。 --暂时解决搜索结果不一致的问题 image

ldqk commented 2 years ago

索引有时删不掉似乎是lucene的问题,你可以参考下我的搜索的最佳实践,我是通过搜索引擎的搜索结果作为条件再到数据库去查询的,因为我的场景是需要做二次过滤,不过你也可以参考我的这种做法,也能解决搜索结果不一致的问题:https://github.com/ldqk/Masuit.MyBlogs/blob/9ad2a436e79744fef5f1aeaca5694fb8fa096504/src/Masuit.MyBlogs.Core/Infrastructure/Services/PostService.cs#L100

ldqk commented 2 years ago

其实这个思路也可以用于补充本库无法做到丰富的条件搜索的场景

yangbocheng commented 2 years ago

查找了资料,发现删除不了字段是因为用于deleteIndex的字段,列也被配置为分词了,因此删除索引始终无效 查看源码发现删除时是利用了Id,及IndexId字段,因此对源码中Id的索引设置修改了下,修改后就能正常删除索引了。 但是我的例子是主键是guid,下列代码有效 image

ldqk commented 2 years ago

可以,你提一个pr吧

yangbocheng commented 2 years ago

已提交一个pr。 但是换了个修改思路。请博主看看有没有问题 https://github.com/ldqk/Masuit.LuceneEFCore.SearchEngine/pull/21

ldqk commented 2 years ago

没问题,已合并

yangbocheng commented 2 years ago

博主能发个nuget新包不

ldqk commented 2 years ago

今天之内发一个新包,着急的话你就先用源码吧

yangbocheng commented 2 years ago

好滴 谢谢博主。

ldqk commented 2 years ago

已发最新包

yangbocheng commented 2 years ago

新包已解决 多谢