重写 StarBlog 的搜索功能和页面,支持权重设置和结果高亮
💡
原文中文,约3400字,阅读约需8分钟。
📝
内容提要
文章讨论了对StarBlog搜索功能的改进,采用手动计算权重和正则表达式高亮显示搜索结果,优化了搜索逻辑和界面,提升了用户体验。未来计划开发v2版本,可能加入多个关键词搜索功能。
🎯
关键要点
- 文章讨论了StarBlog搜索功能的改进,发现原有搜索功能简陋。
- 新版本允许搜索正文内容,但缺乏权重控制,标题权重应高于正文。
- 考虑使用Elasticsearch或Lucene.NET等全文检索引擎,但因服务负担重而选择简单改进。
- 最终方案为手动计算权重和使用正则表达式高亮显示搜索结果,成本低且效果良好。
- 重写了搜索结果页面,提升了用户体验。
- 搜索逻辑通过Linq计算权重,标题每命中一次加100分,内容命中加1分。
- 使用正则表达式实现搜索结果高亮,生成高亮片段摘要。
- 重构后体验显著提升,但老架构的修补不是长久之计,计划开发v2版本。
- 未来可能加入多个关键词搜索功能,并考虑搭配Lucene.NET。
❓
延伸问答
StarBlog的搜索功能有哪些改进?
StarBlog的搜索功能改进包括手动计算权重、使用正则表达式高亮显示搜索结果,并重写了搜索结果页面,提升了用户体验。
为什么不使用Elasticsearch或Lucene.NET?
虽然考虑使用Elasticsearch或Lucene.NET,但由于服务负担重,选择了更简单的手动改进方案。
如何计算搜索结果的权重?
搜索结果的权重通过Linq计算,标题每命中一次加100分,内容命中加1分,最终得分用于排序。
搜索结果是如何高亮显示的?
搜索结果使用正则表达式高亮显示,匹配的关键词会被包裹在<mark>标签中,以便突出显示。
未来对StarBlog搜索功能有什么计划?
未来计划开发v2版本,可能加入多个关键词搜索功能,并考虑搭配Lucene.NET。
重写搜索结果页面的目的是什么?
重写搜索结果页面的目的是为了提升用户体验,之前的页面设计过于简陋。
➡️