欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一个小小的站内搜索作品,坚守5年的心得体会

程序员文章站 2022-08-28 13:11:22
5年,50+版本迭代,不忘初心,始终为了帮助广大站长更容易实现站内搜索功能 一,开发初衷与思路: 基于Lucene.net重头开发一个站内搜索其实挺费时,且需要一定的二开能力,很多人直接组合一些第三方开源的组件,但如果需要解决好搜索质量,兼顾搜准率与召回率,依然需要做不少调整优化的工作,后来我想能否 ......

5年,50+版本迭代,不忘初心,始终为了帮助广大站长更容易实现站内搜索功能

一,开发初衷与思路:

基于lucene.net重头开发一个站内搜索其实挺费时,且需要一定的二开能力,很多人直接组合一些第三方开源的组件,但如果需要解决好搜索质量,兼顾搜准率与召回率,依然需要做不少调整优化的工作,后来我想能否简化一下lucene.net的使用,所以把分词,配置,索引,搜索等各种底层api等封装成更易于使用的一个中间件(就是上图的searcheasy.searchengine类库),但是因为中间件不好用,干脆就直接把站内搜索的前端也做了,这样用户就无需做任何二次开发,直接在浏览器点点鼠标就可以解决数据导入,创建索引,然后搜索直接就能用了,这个站内搜索系统是这么演化过来的,而且在多年的实践当中,也做了很多细节优化工作。

 

 

二,核心组件:

 

lucene.net : 搜索引擎的核心类库,第三方开源;

 

newtonsoft.json :用于处理json的第三方库;

 

templateengine :用于生成静态页面的模板引擎;

 

中文分词:自己开发,没有用第三方的。

 

 

 

三,项目架构

 

基于.net 4.0框架,传统的三层架构,但在解决方案中的体现是两个项目:

 

searcheasy.searchengine : 搜索引擎类库,整合了lucene,分词器,以及各种搜索相关的封装类库。

 

searcheasy.sitesearch  web项目,后台管理与前台搜索代码,搜索部分没有用伪静态,纯动态的,其中的聚合页生成系统是基于模板引擎生成静态页面的。
解决方案示意图:

一个小小的站内搜索作品,坚守5年的心得体会

 

四,心得体会

当然了,最后不得不说,这个小作品真的不是那么好做,能坚守到如今,纯粹靠的是一份情怀的。拿那么长的时间,去任何to b的软件,估计都能比这个好很多,但从业确确实实帮助了一些站长,认识了不少的站长朋友,也许,收获的见识比本身的收获更多吧。

送给广大技术朋友的一份建议:选择比努力更重要,方向很重要,方向不好不一定能能守得云开见月明

 

但是,产品本身还是不错的,用的站长都说好,方便灵活,简单易用,小众是自然的啦,喜欢折腾与高大上技术的自然选择es,solr去了。

观摩地址: