ldqk / Masuit.LuceneEFCore.SearchEngine

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

高亮结果重复问题 #16

Closed LouLamSan closed 2 years ago

LouLamSan commented 2 years ago

大佬,查询结果高亮,关键字会重复高亮。例如查询的关键字是“项目经理”,最后高亮的结果是 “项目项目经理",请问这种情况要怎么处理?

ldqk commented 2 years ago

结果高亮不属于本项目的范畴,你可以参考下这个项目的最佳实践案例:https://github.com/ldqk/Masuit.MyBlogs/blob/38c8902738c045d15af8d874717b4f8bdb5ea799/src/Masuit.MyBlogs.Core/Infrastructure/Services/PostService.cs#L133=

LouLamSan commented 2 years ago

结果高亮不属于本项目的范畴,你可以参考下这个项目的最佳实践案例:https://github.com/ldqk/Masuit.MyBlogs/blob/38c8902738c045d15af8d874717b4f8bdb5ea799/src/Masuit.MyBlogs.Core/Infrastructure/Services/PostService.cs#L133=

大佬,你这个用的是盘古分词,有试过用jieba分词吗?

ldqk commented 2 years ago

分词是结巴,高亮是盘古

ldqk commented 2 years ago

如果你们是前后端分离的项目,也可以尝试交给前端做高亮显示,当然,SSR页面也可以让前端做高亮的

LouLamSan commented 2 years ago

好吧,我先研究下你的代码,看看具体是怎么实现的

LouLamSan commented 2 years ago

分词是结巴,高亮是盘古

大佬,PanGu.HighLight 这个包有开源的吗?现在我遇到一个问题,我搜索关键字“项目经理”,高亮没有问题了,但是当我搜关键字“项目”的时候,高亮不到关键字,highlighter.GetBestFragment() 这个方法返回了空字符串

ldqk commented 2 years ago

盘古的仓库:https://github.com/JimLiu/Lucene.Net.Analysis.PanGu ,理论上你可以去尝试别的高亮组件

LouLamSan commented 2 years ago

盘古的仓库:https://github.com/JimLiu/Lucene.Net.Analysis.PanGu ,理论上你可以去尝试别的高亮组件

大佬你遇到我说的那种情况吗?你是怎么处理的?

ldqk commented 2 years ago

用这个高亮函数也会重复高亮吗?https://github.com/ldqk/Masuit.MyBlogs/blob/38c8902738c045d15af8d874717b4f8bdb5ea799/src/Masuit.MyBlogs.Core/Infrastructure/Services/PostService.cs#L133=

LouLamSan commented 2 years ago

用这个高亮函数也会重复高亮吗?https://github.com/ldqk/Masuit.MyBlogs/blob/38c8902738c045d15af8d874717b4f8bdb5ea799/src/Masuit.MyBlogs.Core/Infrastructure/Services/PostService.cs#L133=

不会重复,但是出现了新的问题,输入的关键字只有两个字,例如“项目”,这样是分词后的结果也是“项目”,查询也没问题,能命中结果,但是最后高亮的时候,highlighter.GetBestFragment()这个方法返回了空字符串,但是文段里面确实是包含关键字的。

ldqk commented 2 years ago

那你可以研究看看盘古的highlighter.GetBestFragment()内部是怎么处理的

ldqk commented 2 years ago

或者替换别的高亮组件来替代这个函数

LouLamSan commented 2 years ago

或者替换别的高亮组件来替代这个函数

还有其他.net core 可以用的高亮组件吗?求推荐

ldqk commented 2 years ago

你可以在gayhub这儿搜一搜关键词,应该不难找到别的

LouLamSan commented 2 years ago

你可以在gayhub这儿搜一搜关键词,应该不难找到别的

好,谢谢大佬~