全文检索(Lucene&Solr)
1)什么是全文检索?为什么需要全文检索?
结构化数据(mysql等)方便查询,而非结构化数据(如多篇文章)是难以查询到自己需要的,所以要使用全文检索。
全文检索:将非结构化数据的内容提取一部分,然后重新组织,使其有一定结构,然后就能以此快速的查找需要的信息,提取整理后的信息称之为索引。
应用:如淘宝,京东的搜索商品;百度的索引引擎。
2)原始文档:互联网上的网页,数据库中的数据,磁盘上的文件;
索引库:索引+原始文档;
语汇单元:一个term就是一个单元。
3)步骤
创建文档对象:将一个非结构化数据的属性(称为域,如文档名称与路径等)提取出来;
分析文档:去除文档的一些标点符号与一些没意义的词,其他的单词每个设置为特定的term,term的名称就是这些个单词;
创建索引:将这些term作为索引;
保存索引和文档到索引库;
搜索》创建查询》执行查询》渲染结果。
4)通过索引找到的结果可能有多个,他们是怎样排序的呢?
通过索引找到的数据,谁出现的索引词汇数量比较多就排在去前面;
还有一种是反向查询,先查找内容,再查询文本属性,这就比较慢了。
5)mysql数据库往往满足不了高级的搜索,所以使用全文搜索;
Lucene实现站内搜索工作量比较大,性能维护都不好;
所以当下最优的方案是Solr,它提供了较为完备的搜索引擎解决方案。