`
linliuwei
  • 浏览: 33165 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

全文搜索的基本原理

阅读更多
此文内容大多是阅读了Lucene原理与代码分析一文,以及网络上一些其他文章的总结
Lucene原理与代码分析 作者:觉先(forfuture1978)

数据分类
  • 结构化数据:具有固定格式或有限长度的数据,如关系型数据库(先有结构再有数据)
  • 半结构化数据:如XML、HTML,数据的结构和内容混在一起,没有明显的区分(先有数据再有结构)
  • 非结构化数据:无固定格式或不定长度的数据,包括所有格式的办公文档、文本、图片、图像、音频、视频信息等等
非结构化数据搜索(全文搜索)
  • 顺序扫描法:一个文档一个文档的找,对于每一个文档,从头找到尾,如果此文档找到指定的内容,则此文档为我们要找的文件,接着找下一个文件,直到扫描完所有的文件为止。这种方法对小数据量来说是最直接最方便的,但对于大数据量处理就太耗时了。
  • 索引搜索法:将非结构化数据中一部分内容提取出来,重新组织,使其变为有一定的结构,然后对此有一定结构的数据进行搜索,以达到加快搜索的目的。
倒排索引(Inverted Index)
倒排索引是目前搜索引擎最常用的存储方式,也是搜索引擎的核心!在搜索时我们一般按照某些关键词来查找记录,所以也就需要按关键词来建立索引,这个索引我们就称之为:倒排索引(也可称反向索引)
倒排索引所保存的信息一般如下:假设有100篇文档,文档编号从1到100,得到下面的结构图

  • 词典:对某种语言分词处理后,得到的一系列字符串。每个字符串都指向包含此字符串的文档(Document)链表,此文档链表又称为倒排表(Posting List)。
  • 倒排表:倒排表主要优点是,在处理复杂的多关键词查询时,可在倒排表中先完成查询的交、并等逻辑运算,得到结果后再对记录进行存取。这样把对记录的查询转换为地址集合的运算,从而提高查询速度!
创建索引
  • 准备数据:从数据库、Word文档、HTML网页文件等数据源抓取数据
  • 分词:将准备好的数据传给分词组件(Tokenizer)

  • 1)将文档切分为一个一个单独的词
    2)去除标点符号
    3)去除停词(Stop Word)
  • 语言处理:将分词后得到的词(Token)传给语言处理组件(Linguistic Processor),对于英文一般做如下处理

  • 1)将单词转为小写(Lowercase)
    2)将单词缩减为词根形式(Stemming)
    3)将单词转变为词根形式(Lemmatization)
  • 建立词典与倒排表(倒排索引):将语言处理处理后得到的词(Term)传给索引组件(Indexer),它主要做以下事情

  • 1)将得到的词建立词典
    2)对词典按字母顺序排序
    3)合并相同的词成为倒排表

搜索索引
  • 输入查询语句

  • 就像SQL语句一样,全文搜索系统的查询语句也有语法,最基本的如:and,or,not等
    举例,输入的查询语句为:lucene AND solr NOT hadoop
  • 对查询语句进行词法分析、语言处理、语法分析

  • 分析查询语句中的单词、关键字,对语句中的单词进行语言处理(等同创建索引中的语言处理),然后按语法规则生成语法树。
  • 搜索索引,得到符合语法树的文档结果

  • 过程大概如下
    1)首先,在倒排索引中,分别找出包含单词lucene, solr, hadoop的文档链表
    2)其次,对包含lucene, solr的文档链表进行合并操作,得到即包含lucene又包含solr的文档链表
    3)然后,对得到的文档链表与hadoop的文档链表比较排除,得到即包含lucene又包含solr的但不包含hadoop的文档链表
    4)最后,得到的文档链表就是我们要找的结果集
  • 根据文档与查询语句的相关性,对结果集进行排序

  • 对结果集中的每个文档按相关性(relevance)进行打分(scoring),分数最高的排在最前面。而推算文档的相关性一般分为两个过程
    1)找出词(Term)在文档中重要性的过程,也称计算权重(Term weight)的过程
    影响一个词(Term)在一篇文档中的重要性主要有两个因素
    Term Frequency (tf):即此Term在此文档中出现了多少次,tf越大说明越重要
    Document Frequency (df):即有多少文档包含次Term,df越大说明这个词越普通,也就越不重要

    2)判断Term之间的关系从而得到文档相关性的过程,也即向量空间模型的算法(Vector Space Mode)
    这个算法研究中
  • 返回搜索结果


未完
  • 大小: 38.9 KB
  • 大小: 15.8 KB
分享到:
评论
1 楼 ilovejavaforever 2010-08-15  
遗漏了很多关键内容.....

相关推荐

    信息检索基本原理与数据库全文检索技术

    本主题主要探讨了信息检索的基本原理和技术,以及数据库全文检索的实现方法。 信息检索模型是实现信息检索的核心,包括布尔模型、向量模型、概率模型等。布尔模型基于逻辑运算符(如AND, OR, NOT)来组合查询,判断...

    全文索引原理介绍

    全文检索的基本过程可以分为两个阶段:索引创建和搜索索引。索引创建是将现实世界中的所有结构化和非结构化数据提取信息,创建索引的过程。搜索索引是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。 在...

    信息检索系统原理

    信息检索系统原理PPT,主要用于介绍检索系统的一些基本原理

    基于内容的图像检索基本原理.pdf

    ### 基于内容的图像检索基本原理 #### 引言与背景 随着信息技术的快速发展,特别是互联网技术的成熟和普及,人们对于图像数据的需求日益增长。如何有效地管理和检索这些图像资源成为了一个重要的研究课题。基于...

    Lucene学习总结之一:全文检索的基本原理[归纳].pdf

    文档索引。在全文检索中,Lucene是一个关键的工具,它是一个高效的、基于Java的全文检索库。全文检索主要用于处理非结构化...理解和掌握全文检索的基本原理以及Lucene的工作机制,对于开发高效率的搜索引擎至关重要。

    搜索引擎基本工作原理.pdf

    搜索引擎是互联网上获取信息的关键工具,其基本工作原理主要包括三个主要步骤:抓取网页、处理网页和提供检索服务。搜索引擎的爬虫程序(Spider)通过网络中的超链接不断抓取网页,形成网页快照。抓取过程中,搜索...

    LUCENE搜索引擎基本工作原理

    **LUCENE搜索引擎基本工作原理** Lucene是一个开源的全文搜索引擎库,被广泛应用于构建复杂的搜索引擎系统。它的设计目标是高效、灵活且可扩展。理解Lucene的工作原理有助于开发人员更好地利用这一强大的工具。 **...

    数据库基本原理ppt

    数据库是计算机科学中的一个重要组成部分,尤其对于初学者来说,理解其基本原理至关重要。本文将深入探讨标题"数据库基本原理ppt"所涵盖的四个主要章节:数据库基本原理、Access数据库基础知识、库和表以及查询。 ...

    智能优化算法基本原理

    ### 智能优化算法基本原理 智能优化算法是一类基于自然界生物智能行为设计的算法,它们模仿了生物群体在解决复杂问题时所展现出来的智慧和策略。在这些算法中,蚁群算法、遗传算法、模拟退火算法以及神经网络算法尤...

    搜索引擎基本工作原理

    搜索引擎基本工作原理 搜索引擎基本工作原理是我们日常搜索应用和网站提交推广的关键所在。了解搜索引擎的工作原理可以帮助我们更好地理解搜索引擎的运作机制,从而提高我们的搜索应用和网站推广效果。 搜索引擎的...

    ajax 基本原理 ajax 基本原理

    ### Ajax基本原理详解 #### 一、引言 随着互联网技术的发展,用户对于网页应用的交互性和用户体验的要求越来越高。传统的Web应用通常采用浏览器发送请求、服务器处理并返回完整页面的方式,这种方式存在明显的缺点...

    搜索引擎技术介绍 介绍搜索引擎各方面技术的基本原理

    搜索引擎是互联网信息检索的核心工具,它的技术基于历史悠久的全文检索技术。搜索引擎这一术语可拆解为“搜”、“索”、“引擎”三个概念。“搜”指的是从互联网上抓取海量信息,包括网页内容的智能提取、排重和质量...

    搜索引擎 工作原理

    本文旨在介绍搜索引擎的基本概念,深入探讨其工作原理及类型,并分析当前搜索引擎的发展现状与未来趋势。此外,还将简要介绍主流的中文搜索引擎网站。 #### 搜索引擎的基本概念 搜索引擎是一种网络应用程序,它...

    回溯算法的基本原理与技巧

    回溯算法是一种试探性的解决问题的...通过学习这两份资料,读者不仅可以理解回溯算法的基本原理,还能掌握如何在实际问题中灵活应用和优化回溯算法,提高解决问题的效率。对于深入理解算法和提升编程能力具有重要作用。

    文献检索的基本原理.ppt

    文献检索是信息时代获取知识和数据的关键技能,其基本原理涉及信息的组织、存储和查找。文献检索不仅包括从信息集合中找到所需信息的过程,也涵盖信息的存储,因此,广义上讲,文献检索是“信息的存储与检索”。狭义...

    lucene原理与代码分析完整版

    #### 一、全文检索基本原理 全文检索是一种能够检索文档中任意词语的信息检索技术。与简单的关键词查询不同,全文检索不仅关注文档标题、元数据,还深入到文档的实际内容中去。这种技术广泛应用于搜索引擎、文档...

    全文检索原理及Lucene实之搜索

    通过本文的介绍,读者应该能够理解Lucene的基本原理和工作流程,并能够基于Lucene构建简单的全文检索系统。当然,在实际应用中还需要考虑更多的因素,比如如何处理非纯文本文件、如何实现分布式索引和搜索、如何提高...

    lucene3.0原理与分析

    #### 全文检索基本原理 **全文检索**是一种针对非结构化数据(例如电子邮件、Word文档等)进行搜索的技术。它与传统的结构化数据搜索(例如数据库查询)不同,后者通常依赖于预定义的字段和属性。全文检索的主要...

    人工智能-项目实践-信息检索-南开大学信息检索系统原理课设作业,完成一个校内网搜索引擎

    在这个名为“人工智能-项目实践-信息检索-南开大学信息检索系统原理课设作业”的压缩包文件中,我们可以深入探讨几个关键的知识点,包括信息检索系统的基本原理、搜索引擎的构建以及Python在其中的应用。 首先,...

Global site tag (gtag.js) - Google Analytics