zoukankan      html  css  js  c++  java
  • 搜索服务器开篇介绍

    背景

    现在的客户对搜索的要求越来越高,为了适应不同的项目。我们希望可以我们的全文检索做成中间件的形式开放出去出去,给不同的Team使用。在这样的想法下,我们设计了搜索服务器中间件的第一个版本。

    工具

    开源的全文检索工具有:

    Solr:Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

    Sphinx:Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

    HubbleDotNet:HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索引擎组件。开源协议是 Apache 2.0。HubbleDotNet提供了基于SQL的全文检索接口,使用者只需会操作SQL,就可以很快学会使用HubbleDotNet进行全文检索。HubbleDotNet可以实现全文索引和查询、多域检索和排序、分组统计、消重、分类、聚类、多表关联查询等等一系列全文检索和数据挖掘功能。 HubbleDotNet提供开放的数据库适配器接口,可以和各种数据库完美整合,为各种数据库系统附加全文检索和数据挖掘功能。 HubbleDotNet设计了较为完善的并发控制程序,数据的增删改查可以多线程同时并发进行,没有任何冲突。HubbleDotNet还进行了缓存和 内存管理设计,可以帮助用户最大限度的提高查询的效率。

    Lucene:这个估计大家都知道,就不介绍

    系统架构

    我们其实完成的功能跟Solr类似,就是基于Lucene完成搜索服务器(中间件)。

    为什么我们不用solr.因为我们team是基础C#的,所以我们用C#自己去写,我们更容易控制。我们要根据我们业务需要更灵活。性能上,由于 Solr 的建索引和搜索是同一个进程,耦合度比较高,对于性能调优有一定的影响。

    这个是我们设计中间的件的结构图

    %S`V{_6TOOFTD5P1L5TEB}V

  • 相关阅读:
    如何在Android Studio中添加注释模板信息?
    Android Activity标签属性
    Android Activity全面解析
    Mac office ppt无法正常输入文字的问题解决方案
    将Android Studio默认布局ConstraintLayout切换成LinearLayout
    Java中Double保留后小数位的几种方法
    java文件传输接口
    纯JS编写打地鼠游戏
    JavaScript监听手机物理返回键的两种解决方法
    spring注解方式实现定时器
  • 原文地址:https://www.cnblogs.com/JackWang/p/2612594.html
Copyright © 2011-2022 走看看