搜索功能实现的基本思路

lucene学习

 

搜索功能的实现有两种方法:

其一是使用数据库的like进行模糊查询,其二是使用全文索引lucene

 

lucene与数据库like语句相比的优点

本项目使用全文索lucene完成产品搜索功能,lucene的优点如下:

1. 在数据量比较大,查询字段比较多的情况下,如果采用数据库like  SQL查询,性能比较差,而采用lucene来查询性能相对like sql语句查询好些。

 

2. 如果采用lucene进行搜索,搜索到的结果相关度比较高,而且把匹配度高的记录排在最前面;而数据库的like语句查询只会查询出含有关键字的记录,其内容相关度不高,并且不能实现匹配度高的记录排在最前面的效果。

 

3. 使用luence进行搜索,能够对查询的结果进行高亮显示,而数据库的like语名查询出来必须在页面中使用javascript等脚本语言进行高亮显示处理,才能实现高亮显示。

 

 

lucene的简介

使用lucene分为两步:1,建立索引,2,查询索引

 

建立索引和查询索引时都会用到分词技术,常用的分词原理有:

1. 一元分词:一个词一个词的分

2. 二元分词:两个词两个词的分

3. 字典分词:这是一种匹配度最高的分词技术,效果最,使用字典分词必须要建立字典,目前使用最多的中文分词器是一个网友写的paoding (庖丁解牛分词器)

 

 

本项目使用luence完成商品搜索功能但不直接使用 LuceneAPI而是使用了CompassAPI.   CompassLuceneAPI进行了封装.

为什么使用CompassAPI而不直接使用LuceneAPI的原因跟,使用hibernate而不使用JDBC的原因是一样的.

做软件时一直强调面向对象的思想,我们要操作数据库就使用面向对象的hibernate而不使用拼接SQL语句的方式使用JDBC

现在我们要操作的对象是“索引”,所以我们使用的是面向对象的CompassCompass是基于lucene的面向对象的操作索引的产品。

 

hibernate被称为ORM框架,Compass被和为OSEM产品,

关于Compass想知道更多百度或Google去搜吧.

<!--EndFragment-->

<!--EndFragment-->

猜你喜欢

转载自olikeit.iteye.com/blog/1839759