全文检索系统概述

MySQL 全文检索的实现 这有朋友聊到他们的系统中要接入全文检索,这让我想起了很久以前为一个很古老的项目添加搜索功能的事儿。一提到全文检索,我们首先就会想到搜索引擎。也就是用一个词、一段文本搜索出匹配的内容。一般这种技术都有对应的实现方式,ES(ElasticSearch)就是专门干这个的,如果你们的业务中明确需要全文检索,或者简单一点说,需要根据关键词搜索出匹配的内容,那就直接用 ES 就好了。无论你怎么调研,都不推荐使用 MySQL 实现这种需求,显而易见,MySQL 作为关系型数据库,本身就不适合做搜索这种需求。 阅读详情
1、全文检索系统的基本内容

  全文检索系统是指可以对资料源的全部文本内容进行检索的系统。这涉及到资料源文本内容的提取和建索引、检索条件分析、索引匹配、匹配结果排序输出四个步骤,其中的难点在于保证检索结果的相关性,即系统查出来的条目确实符合查询条件的意思。很显然,正确理解用户输入的检索条件是前提条件,而“理解”依次要经历词法、语法和语义分析三个阶段。

  词法分析是为了从连续的输入串中分辨出基本的语言单位,通常称做分词。对于英文来说,单词与单词之间都有明确的分隔符,分词简单而直接,而对于中文来说,没有明确的词语分隔标记,确定哪几个字是一个词就比较麻烦了。目前中文分词有两种常用做法:固定长度切分(N-Gram) 或者基于字典比较。固定长度切分操作简单,把一串文字按照固定长度依次切成词,比如固定长度为2,那么“全文检索”就能分出“全文/文检/检索”三个词。基于字典比较法相对准确,系统内有一个记录有全部词语及其出现频率的字典,分词时按照某种策略依次取输入串的片断来查字典以确定它是不是一个词,进一步还可以利用词性等参数来进一步提高分析的准确性。

  固定长度切分法的最终检索结果并不象想象中的那么差,目前还是主要的实用算法。

  对于自然语言的语法和语义分析目前离实用还有点距离。

  2、全文检索产品

  目前比较流行的全文检索产品有:

  2.1 Apache Nutch/Lucene : http://lucene.apache.org

  作者:Doug Cutting cutting@apache.org

  版权协议:Apache License

  Doug Cutting 在全文检索领域有多年的研究和实践经验,他的部份论文和专利可见 http://lucene.sourceforge.net/publications.html。

  Lucene是一个全文检索引擎,很好的实现前面提到的四个步骤所需功能,但是还不是一个完整的产品,并不提供索引管理界面、资料源的解析组件等。 Lucene已经开发多年,并在继续发展中。

  Nutch是一个全文检索产品,其核心部份还是Lucene,但提供了各种文件格式的分析器等大量外围功能。Nutch项目从Apache孵化器出来时间不长,其稳定性还有待观察。

  Lucene把分词的处理逻辑封装成一个对象,称为Analyzer,早期的Lucene中没有带中文分词的实现,目前在官方代码库里已经有两个可处理中文的分词对象,分别是:

  org.apache.lucene.analysis.cn.ChineseAnalyzer 和 org.apache.lucene.analysis.cjk.CJKAnalyzer。两者的区别在于,ChineseAnalyzer会将每个汉字分成一个词(si-gram),而CJKAnalyzer会将每两个相连的字分成一个词(bi-gram),前者是由大富翁论坛的创始人yysun(http://www.delphibbs.com/)开发的,后者作者是che dong(叫这个名字的人似乎不少,不确定是哪个)。1.4以后的版本里,StandardAnalyzer也能正确处理双字节字符了,实际效果也是单字切分。

  代码见:http://svn.apache.org/viewvc/lucene/java/trunk/contrib/analyzers/src/java/org/apache/lucene/analysis/

  基于词典的分词也有一些可供利用的资源,比如Erik Peterson的http://www.mandarintools.com/segmenter.html 、中科院计算所的ICTCLAS http://www.nlp.org.cn/project/project.php?proj_id=6 等。

  Lucene本身是用JAVA语言写的,现在有官方在 Lucene4C 支持c/c++,也有.Net(C#语言)实现的称为dotLucene或者Lucene.net(http://www.dotlucene.net/)

  2.2 Open Full Text Search engine http://openfts.sourceforge.net/

  作者:XWare http://www.astronet.ru/xware/

  版权协议:GPL V2

  这是一个基于PostgreSQL GIST特性的引擎,本身用perl/tcl实现,也提供python接口。

  2.3 商业产品

  ICTCLAS http://www.nlp.org.cn/project/project.php?proj_id=6

  海量 http://www.hylanda.com/

  TRS http://www.trs.com.cn/

  dtSearch http://www.dtsearch.com/

  FindinSite http://www.phdcc.com/fis/

 
打造高效全文检索系统:Python全文检索框架实例 随着信息爆炸时代的到来,大量的文本数据需要被有效地组织、存储和检索。全文检索作为一种常用的技术手段,可以快速地从大规模的文本数据中找到所需信息。本文将介绍如何使用Python构建一个高效的全文检索系统,并提供相应的源代码示例。全文检索系统的基本原理是将文本数据分词,并构建倒排索引。倒排索引是一种数据结构,它将每个词映射到包含该词的文档的列表中。通过倒排索引,可以快速定位包含特定关键词的文档,从而实现快速检索。 阅读详情

相关推荐

基于lucene的全文检索系统

基于struts2的全文检索系统,实现了文件上传和下载,并实现对上传的文件进行检索。

全文检索系统

全文检索系统 什么是全文检索?答:在当前站点中的所有数据都将会被当做搜索的目标,通过一个关键字,可以把处于不同位置的相关数据都检索出来,以列表的方式进行显示。 普通情况下,根据关键字查询数据库,用模糊查询的方式:select * from ajia_item where title like ‘%电脑%’ ;这种模糊查询效率极低。 如果数据量非常大,需要提高查询效率,可以为title字段添加索引(...

lz1170063911的博客 1391

lucene 全文检索系统 java源码 (信息检索技术)

lucene文档检索系统,java源码,可执行程序,支持pdf,doc,xls,ppt,html,txt。

全文检索系统技术架构及流程说明

技术架构图 索引的创建 根据文件来源,分为hadoop数据和oarcle数据两类。 (1) hadoop数据 在线网盘的文本文件和非文本文件都保存在hadoop的hdfs或hbase数据表中,推荐系统的网页文件也保存在hbase表中。这些文件通过tika、Jsoup等文本提取或文本解析工具将文件名、文本内容、网页文字内容等可索引数据解析出来保存在hbase表的对应字段中,然后通过ES-...

影子的博客 3626

最新全文检索系统开源lucene资料大全(pdf格式)

最新全文检索系统开源lucene资料大全 pdf格式

中文检索系统

开发环境 vs2010 +server2008 R2 实现功能:管理员及用户登陆注册,文档上传,用户管理,文献管理,在线预览pdf文档,文献综合检索、字母检索、类别检索等。

Elasticsearch全文检索系统实现深入详解

题记学习ES的童鞋,都有一个开发一个类似百度的搜索引擎的想法。当然功能不一定是百度、360、谷歌传统的搜索引擎那么强大。但是,能实现基本的全文检索、指定类型的检索、评分高低优先级排序等等。那么问题来了,该如何实现?需要什么技术呢?1、效果图注:这张图是从网上down的,我已经实现了上述功能。 (不能截图,原因:你懂的!)2、前后端交互2.1 Elasticsearch服务端作为检索引擎,数据是

铭毅天下Elasticsearch 1万+

用Python+Charles搞定小程序付费短剧下载(附完整代码与避坑点)

本文详细介绍了如何利用Python和Charles抓包工具实现小程序付费短剧的自动化下载。通过分析小程序视频接口、破解请求参数,并编写Python脚本,读者可以轻松获取并保存短剧内容。文章还提供了完整的代码示例和常见问题的解决方案,特别适合对视频采集和抓包技术感兴趣的开发者。

weixin_28731231的博客 1190

16款开源的全文搜索引擎

全文搜索引擎就是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。许可证:Apache-2.0开发语言:JavaApache Lucene 是完全用 Java 编写的高性能、功能齐全的全文检索引擎架构,提供了完整的查询引擎和索引引擎、部分文本分析引擎。目的是为软件开发人员提供一个简单易用的工具包,以方便地在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。许可证:Apache-2.0。

Spontaneous_0的博客 5748

国标GB28181视频平台EasyGBS国标平台设备播放断流现象的问题解决方案

于是排查代码发现,当设备网络较差时,设备会断流,超过指定的时间30s(EasyGBS平台默认值),就会主动清除流媒体服务,但是redis中的流数据还在,而当设备在录像时,自动保活会从redis中取保活流数据,所以就会出现设备状态显示正在播放,但是流已经消失的情况。有用户反馈,在安防视频监控EasyGBS运行时,接入的设备刚开始可以正常播放,开启云端录像后,也没有停止和重播的操作,但是出现了视频流断流的现象。在设备进行播放保活时,对流信息进行判断,添加一个最后的处理流时间,如果超过指定时间就自动重新拉流。

EasyNTS的博客 435

深入解析ADC采样电容:从充电误差到LSB精度的关键设计

本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。

android的专栏 1103

什么是全文检索与全文检索系统

全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。 全文检索的方法主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同...

HONEY MOOSE 393

11、机器学习中的聚类与隐马尔可夫模型

本文介绍了机器学习中的两种重要方法:聚类算法和隐马尔可夫模型(HMM)。聚类作为无监督学习的代表,适用于发现无标签数据中的结构,常见算法包括K-均值和自组织映射(SOM),并在传感器数据分析等场景中展现应用价值。隐马尔可夫模型则是一种可解释的序列模型,用于从观测数据中推断隐藏状态,广泛应用于语音识别、自然语言处理和生物信息学等领域。文章详细讲解了HMM的核心概念如马尔可夫性质、转移与发射概率,并通过TensorFlow实现了前向算法,展示了其计算观测序列概率的动态规划思想。最后对比了两类方法的应用场景,展望

garlic的博客 180

开放源代码的全文检索引擎Lucene

··· 2 第一节 全文检索系统与Lucene简介··· 3 一、 什么是全文检索与全文检索系统?··· 3 二、 什么是Lucene?··· 4 三、 Lucene的应用、特点及优势··· 4 四、 本文的重点问题与cLucene项目··· 5 第二节 Lucene系统结构分析··· 5 一、 系统结构组织··· 5 二、 数据流分析··· 6 三、 基于Lucene的...

xiaoxia 256

计算机网络实验报告实验七可靠传输TCP协议分析

计算机网络实验报告实验七可靠传输TCP协议分析

m0_56638814的博客 966

自然语言处理6 -- 情感分析

1 概述 情感分析是自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数,从而从各个维度上改进外卖服务。 情感分析可以采用基于情感词典的传统方法,也可以采用基于深度学习的方法,下面详细讲解 ...

谢杨易的博客 5万+

Lucene學習筆記(一)

     全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。   全文检索的方法主要分为按字检索和按词检索两种。按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文...

new_jeffer的专栏 134

微信小程序 - 完美解决“code“:“NO_AUTH“,“message“:“商户号该产品权限未开通,请前往商户平台>产品中心检查后重试“(微信小程序报错问题排查解决)

微信小程序NO_AUTH: 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试?微信小程序提示商户号该产品权限未开通,请前往商户平台>产品中心检查后重试,微信小程序"code":"NO_AUTH"错误码怎么解决,报错信息如下:httpResponseBody[{"code":"NO_AUTH","message":"商户号该产品权限未开通,请前往商户平台>产品中心检查后重试"}],微信小程序支付问题,如何解决这个问题,虚拟支付商户号,虚拟支付商户号里面没有产品支付的页面,排查商户号没问题,商户号配置

🏆 前端领域优质创作者 4444

开源索引系统

1,Lucene http://lucene.apache.org/ 2,Sphinx Sphinx是一个高效的索引系统,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件...

JustGT@JavaEye 158

YOLO11-Seg优化:注意力魔改 | 具有切片操作的SimAM注意力,魔改SimAM

问题点:SimAM计算整张特征图的像素差平均值时加权可能会忽略小目标的重要性,同时与整体平均值相比可能和背景信息相似,导致加权增强较弱;

会AI的学姐 459

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Lucene入门基础教程

http://www.linuxidc.com/Linux/2014-06/102856.htm转载目的:因为以后要用solr工具,生成二级索引到hadoop中快速查询。而solr是基于lucene开发的。Lucene入门基础教程简介[日期:2014-06-08]来源:Linux社区 作者:xinxinqiu1.1 全文检索的概念1) 从大...

weixin_34032779的博客 90

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Lucene3.0 初窥 总结

来自:http://liuxinglanyue.iteye.com/blog/851972 Lucene3.0 初窥 总结(收藏)   lucene数据结构全文检索框架   【Lucene3.0 初窥】全文检索的基本原理   【Lucene3.0 初窥】Lucene体系结构概述   【Lucene3.0 初窥】文本分析器Analyzer   【...

152

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Lucene:基于Java的全文检索引擎简介

Lucene是一个基于Java的全文索引工具包。 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装...

chunrenrong2587的博客 958

Elasticsearch 全文检索概述

基于数十年的信息检索领域研究成果构建,全文检索可输出稳定可靠的检索结果,且其性能可随数据体量的增长实现可预期的线性扩展。分析器:文本分析的完整执行单元,Elasticsearch内置多种开箱即用的分析器,同时支持用户自定义,适配电商、法律、医疗等不同业务场景。,区别于传统“文档ID→内容”的正排索引,倒排索引的结构为「词项 → 包含该词项的所有文档ID+词频、位置等元数据」。支持相关性打分:索引中存储的词频、文档频率、位置信息,是BM25算法的核心数据来源,可实现精准的结果排序。

海兰 1036

自己开发网站全文检索系统

注: - 原文: 自己开发网站全文检索系统(Nob) - 本文永久更新链接,markdown格式源码 Github: Aidan Dai 概述 1 问题提出 2 解决的办法 全文检索系统设计与实现策略 1 系统的架构 2 模块设计 3 系统整体运作流程 实验系统执行Experiment 1 实验的目标 2 实验步骤 1. 概述1.1. 问题提出假如你拥有一个庞大的网站,内容又多,那么来访者

Aidan Dai 5555
上一篇: 搜索引擎翻页导航条页码计算方法
下一篇: 解析搜索引擎检索式的构建
idea888
博客等级 码龄20年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值