关于搜索

关于搜索这块(非搜索引擎),了解不多,之前用过的也仅限于数据库查找,不能称之为搜索。近来工作需要,稍微接触了下,了解了些这方面的知识。
1、基于MemCache的搜索
    目前基于MemCache的搜索,在B/S系统中比较常用。尤其是很多电子商务类网站,对响应要求较高,多采用此方式。
    这其中的主要技术是MemCache。直白的说,就是将数据调用到内存中,然后从内存中读取,从而大大提高响应速度。
   目前工作中采用此方式,具体就是将数据库里的数据全部提取写入MemCache。然后操作MemCache,通过Linq进行整理后,进行相应的搜索查找。效果还是挺不错的。
2、Solr /Redis搜索
    关于Solr/Redis搜索,是公司的一个内部培训。简单了听了一下,没有做深入了解。
    Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。文档通过Http利用XML 加到一个搜索集合中。查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,  Solr高亮显示搜索结果,通过索引复制来提高可用  Solr性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等
    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
原文地址:https://www.cnblogs.com/xpengfee/p/2579470.html