solr 教程 01-DenoFiend
学习solr是从solr1.4开始的,项目中搜索用到了solr,简单的做个教程------- 整理思路。一:solr简介(转)
二: solr 和数据库
数据库技术是每一个开发人员必备的技能,数据库和 Lucene 搜索索引并不只是在概念上不同,这种巨大的不同是: Lucene 搜索索引就像一个单独的数据库表的数据库,但是它不支持任何关系查询。看起来是太不可思议了,但仔细想想 Lucene 搜索索引 是用来支持搜索的,并不是像数据库那样是存储数据和数据之间关系的。所以,数据库必须是3NF的,但索引却不是,反而经常是存储用户所要搜索的数据。
其他显著的不同:
1. 更新:solr中的整个文档只可以删除后再添加,不可以更新。
2.子字符串搜索与 文本搜索:用数据实现这两种搜索,比较差的方法类似于:SELECT * FROM mytable WHERE
name LIKE '%Books%'. 这样可以搜索到 "CookBooks" 和"MyBooks". 而Lucene 利用 单词进行基础搜索,这依赖于分析器的配置,这就意味着更多形式的单词会被发现,甚至是读音相同的。利用 先进的ngram 分析算法也可以做到,虽然这是罕见的。
3.评分结果和boosting: Lucene的强大之处来自于其根据相似度来对这个文档进行评分的。举例:如果许多单词都被搜到而且是它们是可选的,Lucene会给匹配道更多单词的文档更高的分数。而在数据库中对于一条记录是不是匹配,却没有这个特性来筛选。Lucene还可以对字段进行排序。
4.非常慢的垃圾回收(Slow commits): Solr的高度优化是用来加速搜索速度的,搜索速度的加快是由于缓存。当一个垃圾回收来用完成一个文档的添加,所有的缓存将被重建,这样会消耗几秒或者一分钟,所需的时间依赖很多原因。
(ps: 以上翻译和总结可能会有错误,欢迎指正,一起进步)
三.solr官方教程
数据库和solr之间不同往往会限制项目在数据存储这一块的设计,如何权衡数据库和solr之间的比重?需要进一步在各个方面进行对比分析。
页:
[1]