`

搜索功能实现的基本思路

阅读更多

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-->
分享到:
评论

相关推荐

    点击搜索框弹出热门搜索以及点击缓一缓 实现换一批热门关键词的实现思路以及代码 .zip

    以上就是实现这个功能的基本思路。具体实现可能需要根据实际的项目需求和所使用的库进行调整。提供的代码实现应该包括这些关键部分,以确保功能的完整性和正确性。如果你在实现过程中遇到任何问题,可以留言咨询。

    servlet+jsp实现百度搜索自动补全功能

    在本文中,我们将深入探讨如何使用Servlet和JSP技术实现类似百度搜索的自动补全功能。这个功能在许多网站上都很常见,它提高了用户输入查询的效率,为用户提供了一个友好的交互体验。让我们一起了解其背后的原理和...

    C语言实现通讯录功能

    通过这篇文章,读者可以了解C语言实现通讯录功能的基本思路和实现方法,从而更好地掌握C语言的编程技巧和编程思想。 代码实现: 在contact.h头文件中,我们定义了两个结构体:Peo和Contact。Peo结构体用于存储个人...

    JSONP跨域实现百度搜索功能(v1.0.0)

    以上就是JSONP跨域实现百度搜索功能的基本流程。需要注意的是,虽然JSONP可以轻松地实现跨域请求,但它也有一些限制,如只支持GET请求,且无法处理错误。对于更复杂的跨域需求,可以考虑使用CORS(Cross-Origin ...

    42丨动态规划实战:如何实现搜索引擎中的拼写纠错功能?1

    以下是动态规划的基本思路: 1. 初始化一个n×m的矩阵,n和m分别为两个字符串的长度。 2. 对于矩阵的第一行和第一列,对应于只删除或只增加字符的情况,可以直接计算编辑距离。 3. 对于矩阵中的其他位置,如果当前...

    查找二叉树功能实现

    首先,我们回顾一下二叉搜索树的基本性质:对于任意节点,其左子树中所有节点的值都小于该节点的值,而右子树中所有节点的值都大于该节点的值。基于这个性质,我们可以高效地执行上述操作。 1. 删除小于某一值的...

    jQuery多功能搜索框插件下拉菜单选择代码

    本篇文章将深入解析名为"jQuery多功能搜索框插件下拉菜单选择代码"的项目,通过分析压缩包中的文件,揭示其工作原理和实现方式。 首先,项目中包含的主要CSS文件有`bootstrap.min.css`和`jquery.dropdown.css`。`...

    js实现select自动补全功能

    在JavaScript编程中,实现`...以上就是使用JavaScript实现`select`标签自动补全功能的基本思路和扩展考虑。通过这个功能,我们可以让Web应用更加友好和高效。在实际项目中,可以结合具体的业务需求进行调整和优化。

    C++实现的二分搜索

    它的基本思想是通过不断地将搜索区间对半减小来快速定位目标值。这个概念源于数学上的对数函数,因为每次查找都使搜索范围减少一半,所以时间复杂度为O(log n)。 在C++中实现二分搜索,我们需要遵循以下步骤: 1. ...

    MyQQ基本代码实现

    【MyQQ基本代码实现】是本文的核心主题,它涉及到的是一个基本版本的QQ聊天软件的源码编写。虽然这个版本的软件并未实现联网功能,但它为理解即时通讯软件的基础架构和工作原理提供了一个很好的起点。下面我们将深入...

    实现树菜单功能.rar

    这些功能的实现依赖于具体的编程语言、库和框架,但核心思路是扩展数据模型和交互逻辑。 综上所述,实现树菜单功能涉及HTML/CSS/JavaScript的前端技术,或是.NET、Java等后端框架的控件使用。通过合理的设计和合适...

    基于matlab实现分布式电源的选址定容的改进的遗产算法算法,是最基本的遗传算法,基本实现了选址定容的功能.rar

    它的基本思想是通过模拟自然选择和遗传机制,通过迭代过程逐步逼近最优解。在分布式电源选址定容的问题上,遗传算法可以用来搜索最优的电源配置组合,包括位置和容量。 首先,我们来理解遗传算法的基本步骤: 1. **...

    搜索引擎ppt及其在编程中的实现

    标题中的“搜索引擎ppt及其在编程中的实现”表明我们将探讨搜索引擎的工作原理、设计思路,并结合编程实践来理解如何在实际项目中构建一个简单的搜索引擎。在这个主题中,我们可以涵盖以下几个关键知识点: 1. **...

    QT开发的音乐播放器源代码及发布程序(添加了拓展功能)

    这个是实现歌词显示,歌曲拖放等功能的程序,入门级的软件前几天发布上来了,需要的请搜索下载“基于QT的音乐播放器源代码及详细教程(完成最基本功能)”。本附件包含源代码及发布程序。 这CSDN上传资源真纠结,...

    35丨Trie树:如何实现搜索引擎的搜索关键词提示功能?1

    【Trie树】,又称字典树或前缀树,是一种高效处理字符串匹配的数据结构,常用于搜索引擎的搜索关键词提示功能。它的设计思路是利用字符串之间的公共前缀,将重复的前缀合并,以提高查找效率。在搜索引擎的场景中,...

    Android中ListView字母排序,实现字母挤压效果以及右侧快速选中字母,搜索关键字功能

    在Android开发中,...在实际开发中,你可能需要根据项目需求对这些功能进行微调,但基本思路和代码结构应当类似。希望这个讲解能对你有所帮助,如果你在实现过程中遇到任何问题,都可以继续深入研究或寻求帮助。

    数据结构实验——JAVA版可视化实现最短路径算法

    在本实验中,我们使用 Java 语言实现了可视化的最短路径算法,具体来说是使用 Dijkstra 算法来实现最短路径的搜索。该算法可以广泛应用于地图查询、工程安排、交通路线规划等许多方面。 在本实验中,我们首先介绍了...

    简单的ssh框架初步实现

    通过实际操作,你可以掌握如何构建一个基本的MVC应用程序,以及如何有效地管理和协调这三个强大的框架。随着经验的积累,你还可以进一步优化配置,引入更多Spring的高级特性,如AOP和Spring MVC,以实现更高效的企业...

    java gui完美实现基础通讯录,增加删减功能

    1. 搜索功能:添加一个搜索框,允许用户输入关键词查找联系人,可以结合` swingx `库中的`JXSearchComponent`。 2. 文件存储与加载:联系人信息应持久化,可能使用`java.io`或`java.nio`文件系统API,或者JSON、XML...

    java语言的图书管理系统可实现一些简单功能

    虽然描述中提到这个系统只实现了部分功能,但其设计思路和基础结构对于理解Java编程以及如何构建数据库驱动的应用程序具有重要的学习价值。 首先,我们来看看系统的核心组件。在Java中,图书管理系统通常会包含以下...

Global site tag (gtag.js) - Google Analytics