关于搜索

2019-03-27 00:47|来源: 网路

关于搜索这块(非搜索引擎),了解不多,之前用过的也仅限于数据库查找,不能称之为搜索。近来工作需要,稍微接触了下,了解了些这方面的知识。
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(主从)同步。

转自:http://www.cnblogs.com/xpengfee/archive/2012/07/06/2579470

相关问答

更多
  • 你用什么形式的api 我在chm格式的api帮助手册中搜索的时候 通常都是选择“搜索"选项卡 然后再”键入要查找的关键字“中输入方法名就OK了 最后搜索结果会告诉你哪些类有这个方法 然后你打开这个类 会发现 搜索的方法名都会是选中状态。。。 一个个去找啊 因为很多类的某个方法参数什么都完全相同 电脑也不知道你要哪个类 只能帮你把类列出来了!
  • 比如我自建一个数据表film搜索数据表中的shouying这个字段栏目ID是56.这样的GET搜索怎么写$str="select * from film where 栏目ID='56' and shouying like '%$_GET[**]%';";$sql=mysql_queyr($str);
  • SpanQuery是按照词在文章中的距离或者查询几个相邻词的查询。 打个比方:如“中华人民共和国” 用“中国“做为关键字, 跨度为某个值,如5。跨度代表 中 和国之间的长度。。 lucene的: SpanQuery包括以下几种: SpanTermQuery:词距查询的基础,结果和TermQuery相似,只不过是增加了查询结果中单词的距离信息。 SpanFirstQuery:在指定距离可以找到第一个单词的查询。 SpanNearQuery:查询的几个语句之间保持者一定的距离。 SpanOrQuery:同时查询 ...
  • 如何用java实现lucene(只使用,不求甚解版-_-") 1.前提   lucene有7个包需要导入:analysis,document,index,queryParser,search,store,util    2.建立索引   IndexWriter writer = new IndexWriter("E:/index", new StandardAnalyze(),true,MaxFieldLength.UNLIMITED); //true代表覆盖原先数据,maxFieldLength用来限制F ...
  • 可以使用PhraseQuery ,如: PhraseQuery query = new PhraseQuery(); query.setSlop(0); query.add(new Term("contents",“故障”)); //contents为索引搜索字段名 query.add(new Term("contents",“原”)); query.add(new Term("contents",“因”)); TopDocs topDocs = searcher.search(query, 10);
  • 点还原网络设置试一下。 操作步骤: 1、打开手机设置。 2、点击通用。 3、点击还原网络设置。
  • lucene搜索问题[2022-12-26]

    创建索引时,因为是TextField,所以会进行分词,IKAnalyzer把Yello你好会分成Yello和你好,所以你第一个termQuery搜索不到信息。改成new Term("content", "你好") 或new Term("content", "yello")就能搜索到了 StringField是不分词的
  • select * from 表层 where 表层.时间 like '%'+text传值
  • appcomponent.html
    appcomponent.ts export class AppComponent implements OnInit { searchForm: FormGroup; search= new FormControl(); searchFiel ...
  • i18n-tasks是一个通过静态分析实现这一目标的宝石: i18n-tasks is a gem that does just this with static analysis: