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

  • 相关阅读:
    java架构师学习路线-HTTP请求类型及说明
    java架构师学习路线-关闭HTTP的TRACE方法
    AC自动机模板
    loj 2721 [NOI2018] 屠龙勇士
    scrum介绍
    本地搭建nacos集群
    js对象
    函数声明与表达式、匿名函数与具名函数、立即执行函数
    第六章 SSH远程服务介绍
    第十二章 配置vlan
  • 原文地址:https://www.cnblogs.com/JackWang/p/2612594.html
Copyright © 2011-2022 走看看