Iveely Search Engine 是一款纯C#实现的搜索引擎。Iveely的中文翻译:爱为您。英文全称:I void everything , enjoy loving you! 希望更多的搜索引擎爱好者加入进来,感受分享的快乐。我期望的Iveely目标是,不是给用户一堆结果让用户去发现最适合自己的,我希望是返回的就是用户 最想要的,用户完全无需筛选,所以Iveely Search Engine 永远没有分页,更希望它能嵌入机器人思维中,成为人类的良师益友。当然现在依然处于文本搜索阶段。
上图是Iveely Search Engine 0.1.0版本的截图,目前只有文本搜索部分,其余的新闻、视频等还没有完全做好,主要是统一的存储模型没有找到。下面大致说一个项目的基础结构:
上面主要分为三大块,刚好对应着Iveely搜索引擎中的三个运行步骤(当您下载程序后的运行方式就是按照上面上个步骤来的)。
1. 找到发布文件夹下的IveelySE.Spider.exe 文件,然后输入你需要爬行的链接。这是A搜索部分。
2 . 当爬行完毕之后,找到文件夹下的IveelySE.Index.exe 然后运行,直到结束。即完成索引。这是B整理部分。
3. 此刻你只需要,运行另外一个文件IveelySE.exe你就可以执行搜索了。搜索的界面你需要部署WebSite的网站,即可。或者你不想这样的话,你在不运行IveelySE.exe的情况下,直接运行Iveely.Search.exe 可在本地执行搜索。 这是C服务部分。
下面介绍一下整个解决方案中,各个项目的含义。
“IveelySE”, “IveelySE\IveelySE.csproj”, 是搜索服务建立部分,搜索的入口是从这里开始的。
“IveelySE.AI”, “IveelySE.AI\IveelySE.AI.csproj”, 搜索的人工智能部分,类似于专家系统。例如输入101+90=?就是通过这个项目计算出来的。
“IveelySE.Classify”, “IveelySE.Classify\IveelySE.Classify.csproj”,是搜索引擎中文本分类(聚类)的实现部分。
“IveelySE.Common”, “IveelySE.Common\IveelySE.Common.csproj”,是搜索引擎中共用部分的提取。
“IveelySE.Config”, “IveelySE.Config\IveelySE.Config.csproj”, 是搜索引擎中的配置部分,尽可能的配置在这个项目中实现。
“IveelySE.Grammar”, “IveelySE.Grammar\IveelySE.Grammar.csproj”, 是搜索引擎中的语法分析部分,例如:site、filetype等等。
“IveelySE.Index”, “IveelySE.Index\IveelySE.Index.csproj”, 是搜索引擎中的索引部分,原数据的整理主要在这里实现,倒排序等也是。
“IveelySE.Liquidate”, “IveelySE.Liquidate\IveelySE.Liquidate.csproj”,是语言处理部分,例如停用词过滤、敏感词等等的处理。
“IveelySE.Segment”, “IveelySE.Segment\IveelySE.Segment.csproj”, ISE中的分词部分,包含词库分词和隐马尔可夫分词。
“IveelySE.Server”, “IveelySE.Server\IveelySE.Server.csproj”, ISE中关于网络通信传输部分。
“IveelySE.Spider”, “IveelySE.Spider\IveelySE.Spider.csproj”, 这是网络爬虫,即数据搜集部分。
“IveelySE.IDFS”, “IveelySE.IDFS\IveelySE.IDFS.csproj”, 这是分布式文件系统部分,包括MapReduce的实现都将在此(此版本无效)。
“IveelySE.BigData”, “IveelySE.BigData\IveelySE.BigData.csproj”, 这是大数据处理部分(此版本无效)。
“IveelySE.BigData.Common”, “IveelySE.BigData.Common\IveelySE.BigData.Common.csproj”, 大数据处理的共同引用部分(此版本无效)。
“IveelySE.BigData.FileSystem”, “IveelySE.BigData.FileSystem\IveelySE.BigData.FileSystem.csproj”,大数据处理的虚拟文件系统(此版本无效)。
“IveelySE.BigData.MasterNode”, “IveelySE.BigData.MasterNode\IveelySE.BigData.MasterNode.csproj”, 大数据存储的主节点部分(此版本无效)。
“IveelySE.BigData.StoreNode”, “IveelySE.BigData.StoreNode\IveelySE.BigData.StoreNode.csproj”, 大数据存储的子节点部分(此版本无效)。
“IveelySE.Search”, “IveelySE.Search\IveelySE.Search.csproj”, 搜索的本地实现部分,无需Web,只要用于内部调试。
“IveelySE.Web”, “IveelySE.Web\IveelySE.Web.csproj”,搜索的Web端实现,界面采用ask的界面(在0.2.0版本中已经移除)。
目前已经发布了0.2.0版本, Iveely Search Engine 的0.2.0版本最大的特点就是“任务驱动式一键式运行”,简单的说就是,在无人监督的情况下,设定好您的参数,一个本地化的完整搜索引擎就可以利用起来,包含数据、索引更新等等都自动化完成。相对于0.1.0它在以下方面有一定的提升:
1. 添加“帮您推荐” 功能。在搜索结果显示的时候,当命中最佳的网页时,该网页将会为您推荐它觉得其它最好的网页。例如:您到一家餐馆吃饭,这家餐馆非常适合您的口味,那么它将推荐它觉得最好的其它餐品给您。就是这个道理。
2. 添加“缓存处理”功能。在0.1.0的搜索过程中,所有的每次请求,都将从索引中选出合适的网页编号,然后根据网页编号提取出数据,这实际是不合算的,在0.2.0种,添加了缓存策略,在最近搜索过的关键字中直接提取上次的结果缓存,无需从头至尾到数据中提取。主要采用数据结构:哈希双链表。
3. 添加项目IveelySE.Run.Task,主要是讲所有的执行任务以任务机器的方式,选择间隔时间执行以及定期更新数据。例如:爬虫任务,可设定每次完成任务之后,6小时候再重新爬行一次。还有索引系统,定期更新系统,定期更新缓存等等,都即将依赖于IveelySE.Run.Task运行。
4. IveelySE.Web,新建了IveelySE.InternetService,IveelySE.Web是我们搜索的展示,但是我们将其移出,采用网络服务的方式,你需要查看搜索结果,将不再依赖于网页,只需要浏览器中输入http://127.0.0.1:8088/query=您的关键字,即可。
以上是ISE 0.2.0 相对于0.1.0版本的不同之处。
无数的错误或者Bugs一定会让大家崩溃,但是请您放心,我们(更多的热爱开源事业的人士)会积极的修改其中的Bug,当然项目中也参杂了其它开源项目的东西,例如:Html分析采用的是HtmlAgilityPack。希望和更多地朋友一起分享我们的快乐。谢谢大家!项目地址:http://iveelyse.codeplex.com/