`

搜索功能实现的基本思路

阅读更多

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

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

    模拟通讯录-数据结构(顺序表实现基本功能).doc

    在本项目中,我们以“模拟通讯录-数据结构(顺序表实现基本功能)”为主题,探讨如何利用数据结构和C++编程语言来构建一个简易的通讯录系统。该系统应具备通讯录的建立、联系人添加、删除、修改以及查找等基本功能,...

    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`。`...

    基于Lucene的WEB站内搜索引擎的研究与实现

    ### 基于Lucene的WEB站内搜索引擎研究与实现 #### 一、搜索引擎基本原理与Lucene概述 ...通过深入理解Lucene的工作原理,开发者可以充分利用其丰富的功能,设计并实现高性能的搜索应用,满足多样化的业务需求。

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

Global site tag (gtag.js) - Google Analytics