• 从零开始使用Hubbledotnet进行全文搜索-前言


    数据库检索时代

    在开发艺外1.0时候,我们需要设计一个对资讯媒体演艺等相关的全文检索;那时候我们全使用的基于SQL Server 2005全文索引进行搜索。

    通手这个手段进行的搜索开发相对简单,与我们去查询一个普通的表没有区别,例如:Select * from SearchAll where Contains(title, ”艺外”),但他的缺点也很明显,例如我只知道这个演艺事件可能包含了“黄升民”和”四大法宝“,那么搜索的结束就有限了,我如果搜索:Select * from SearchAll where Contains(title, ”黄升民” or “四大法宝”),这样的搜索结果肯定不是我们想要的一个结果,因为全文索引是一个精准的匹配,另外一个问题是我们在使用数据库全文检索进行搜索时,速度与性能成为我们的瓶颈。

    分词检索时代

    后来我们在开发艺外2.0时候,我要必须要去解决搜索的问题,于是我们想到了基于分词的搜索引擎,摆在我们面前的是从JAVA移植过来的Lucene.net,以及我们国人自主研发的盘古分词。这就是解决了我们在艺外1.0开发时候遇到的我们搜索”黄升民四大法宝“时候,搜索不到的问题。

    通过Lucene.net加盘古分词进行搜索“黄升民四大法宝”时候,他会把这个词戏拆分为多个关建词进行搜索,通过盘古分词器我们可以看到拆分为了“黄升民/四大/法宝/”。同时,Lucene.net使用了文件进行索引文件的存储与读取,因此也解决了我们在速度与性能上面的问题。

    但我们在使用Lucene.net2.9以及最新的3.0进行测试后发现,我们要对搜索结果进行权重排序时遇到问题,很多自动排序的结果,并不是我们最理想的排序结果。

    另一方面,随着我们艺外数据不断增加,Lucene.net的性能问题也会成为瓶颈,大家如果对Lucene.Net排序有更好的方法的话,可以分享给我。

    基于多引擎的混合搜索时代

    随着我们艺外开发进程,我意识到我们必须要去解决更多的问题,我们要成为中国最好的媒体海量数据库,我们就必须去解决搜索的问题我们要去实现如下的目标:

    • 统一架构下的搜索,而不是像现在去单一的搜索资讯、媒体、演艺
    • 对搜索的关键词能更好的分词
    • 对搜索的结果能更好的排序
    • 能更快速的搜索出结果,提供更好的用户体验。

    我想,这也许是基于混合搜索的时代。在下一篇文章里面,我将带大家去认识一个新的搜索方案。

  • 相关阅读:
    != 比 & 的优先级高
    VC++ 报错:Heap corruption detected
    sqlite 查询数据库中所有的表名,判断某表是否存在,将某列所有数值去重后获得数量
    Unicode与UTF-8,UTF-16
    各种格式的压缩包解压,7zip 命令行
    bat批处理文件运行时隐藏cmd窗口
    标准库中 vector list等排序
    duilib 实现列表头任意拖动
    duilib 实现 XML重用(item完全重合的CList)
    C++-POJ2503-Babelfish[hash]
  • 原文地址:https://www.cnblogs.com/jimmyzheng1983/p/Hubbledotnet.html
Copyright © 2020-2023  润新知