全文检索

PostgreSQL的全文检索(一)

元气小坏坏 提交于 2019-12-10 15:53:34
在全文检索没有出来之前,普通的文件检索都是采用的like,~,或者ilike来匹配文档字段中内容,这种检索方法对小数据量的文本检索是OK的,但数据量大了就不行了。 普通检索的劣势: 1.语言不能完全支持,哪怕是英文,比如检索friend时不能检索出friends或者friendly 2.检索出的结果排序功能不好 3.缺少索引支持,查询速度慢,特别是两头加了两个%时根本就不走索引 PostgreSQL在8.3.x版本后开始支持全文检索。执行步骤,主要分三步走: 1.将文档分词(parsing documents into tokens) 2.转换分词规则(converting tokens into lexemes),如去掉复数后缀s/es,以及加入stop词,使之不会在分词中出现,如常用的'的' 3.按一定顺序查询的优化方式存储(storing preprocessed documents optimized for searching) tsvector存储,使用tsquery查询 注:这里tokes是原始的拆分分词,可能包含常用的无意义的词,lexemes是加工过的有价值的分词 一、全文检索的环境和例子: postgres=# show default_text_search_config ; default_text_search_config ---------------

sphinx全文检索之PHP使用教程

☆樱花仙子☆ 提交于 2019-12-10 13:57:41
这是半年前没有对外写的文章,现在拿出来分享下。可能会有一些不正确或不严谨的地方,某些语言可能比较轻浮,请见谅。 上一篇[ 查看 ]介绍了sphinx的基本安装、配置和使用,现在来看看如何应用在PHP上。 基础 以上一篇的email数据表为例: 数据结构: CREATE TABLE email ( emailid mediumint( 8 ) unsigned NOT NULL auto_increment COMMENT ' 邮件id ' , fromid int ( 10 ) unsigned NOT NULL default ' 0 ' COMMENT ' 发送人ID ' , toid int ( 10 ) unsigned NOT NULL default ' 0 ' COMMENT ' 收件人ID ' , content text unsigned NOT NULL COMMENT ' 邮件内容 ' , subject varchar ( 100 ) unsigned NOT NULL COMMENT ' 邮件标题 ' , sendtime int ( 10 ) NOT NULL COMMENT ' 发送时间 ' , attachment varchar ( 100 ) NOT NULL COMMENT ' 附件ID,以逗号分割 ' , PRIMARY KEY

分布式搜索引擎Elasticsearch安装配置

倾然丶 夕夏残阳落幕 提交于 2019-12-10 10:11:04
分布式搜索引擎Elasticsearch 介绍 Elasticsearch是一个基于Lucene的开源 分布式 搜索引擎,具有分布式多用户能力。Elasticsearch是用java开发,提供Restful接口,能够达到实时搜索、高性能计算;同时Elasticsearch的横向扩展能力非常强,不需要重启服务,基本上达到了零配置。但是目前来说相关资料很少,同时版本更新很快,bug存在,API繁多并且变化。 概念和设计 索引 索引(index)是Elasticsearch存放数据的地方。如果你熟悉关系型数据库,就可以将索引理解为关系型数据库的一张表。但与关系型数据库相比,Elasticsearch可以快速、搞笑地对索引中的数据进行全文检索,并且不需要存储原始数据。如果你熟悉MongoDB,就可以将Elasticsearch的索引理解为MongoDB中的集合。如果你熟悉CouchDB,就可以将索引理解为CouchDB中的数据库。 文档 文档(document)是Elasticsearch中存储的主要实体。文档由字段(行数据的列)组成,Elasticsearch允许一个字段出现多次,该类字段被称为多值字段(multivalued)。每个字段对应一种类型(字符串型、数值型、日期型等)。字段类型可以是复合的,字段可以包含其他子文档或数组。字段类型在Elasticsearch中非常重要

Haystack

こ雲淡風輕ζ 提交于 2019-12-08 20:43:04
Haystack 1.什么是Haystack Haystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持 Solr , Elasticsearch , Whoosh , **Xapian 搜索引擎它是一个可插拔的后端(很像Django的数据库层),所以几乎你所有写的代码都可以在不同搜索引擎之间便捷切换 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 haystack:django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh,solr,Xapian,Elasticsearc四种全文检索引擎后端,属于一种全文检索的框架 whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用 jieba:一款免费的中文分词包,如果觉得不好用可以使用一些收费产品 2.安装 pip install django-haystack pip install whoosh pip install jieba 3.配置 ###添加Haystack到 INSTALLED_APPS 跟大多数Django的应用一样,你应该在你的设置文件

sphinx中文分词搜索coreseek windows下安装与基本使用简介

狂风中的少年 提交于 2019-12-06 04:06:59
这是半年前没有对外写的文章,现在拿出来分享下。可能会有一些不正确或不严谨的地方,某些语言可能比较轻浮,请见谅。 首先说明一下coreseek其实就是基于sphinx的中文分词版本,sphinx本身并没有提供中文分词功能,需要自行安装中文词库比较麻烦,coreseek提供了中文分词功能,提供了完整的官方中文使用文档,并且在使用上和官方的sphinx并没有差别。以 coreseek-4.1 版本为例 下载地址 http://www.coreseek.cn/news/14/54/ 帮助手册 http://www.coreseek.cn/products-install/#doc_cn 下面开始coreseek的安装 安装过程很简单,下载 coreseek-4.1-win32.zip ,解压至某一个文件夹,这里假设放在d:\coreseek下,双击打开test.cmd进行测试,会出来一串命令行的提示信息,留意提示信息,如果没有提示错误就算安装完成 安装后,先别急着怎么使用,首先要配置好文档,解缩包中有测试文件这里测试也略,教程尽量简单点(其实是我懒。。) 配置文件的位置可以放在任何地方,不过建议就放在d:\coreseek\bin\的目录好了,d:\coreseek\etc\目录下提供了好多配置的参考,我们把csft_mysql.conf复制至d:\coreseek\bin\下

全文检索的基本原理

久未见 提交于 2019-12-05 08:29:56
下面两篇内容一样,介绍全文检索的基本原理: http://blog.csdn.net/forfuture1978/article/details/4711308 http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623594.html Apache Lucene的官网: http://lucene.apache.org/core/ 关于Lucene的一些系列介绍,下面两个系列应该是一样的: http://www.cnblogs.com/forfuture1978/category/300665.html http://blog.csdn.net/forfuture1978/article/category/604866 待补充! 来源: oschina 链接: https://my.oschina.net/u/2342410/blog/649704

Lucene全文检索

孤街醉人 提交于 2019-12-04 23:23:03
流程图 一.创建文档 文档域 注: 每一个Doucment可以有多个field,不同的Document可以有不同的field,同一个Document可以有相同的field(域名和域值都相同) 每一个文档都有唯一的编号 二.分析文档   将文档中的大写转化成小写,清除 is a 标点 停用词等过程生成语汇单元,每一个单词叫一个Term,不同的域中拆分出来的的单词是不同的term file_name 和file_content中的相同单词属于不同的域, term key:域 value: spring只有key和value相同的才是一个东西 三.创建索引 来源: https://www.cnblogs.com/lovetl/p/11888056.html

面试-hystack全文检索

别来无恙 提交于 2019-12-04 20:21:59
1、介绍    Haystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持 Solr , Elasticsearch , Whoosh , **Xapian 搜索引擎它是一个可插拔的后端(很像Django的数据库层),所以几乎你所有写的代码都可以在不同搜索引擎之间便捷切换。 2、各组件安装 ''' - 全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。 - haystack:   django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh,solr,Xapian,Elasticsearch四种全文检索引擎后端,属于一种全文检索的框架。 - whoosh:   纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对于小型的站点,whoosh已经足够使用。 - jieba:   一款免费的中文分词包,如果觉得不好用可以使用一些收费产品。 ''' 二 Haystack安装 # pip install django-haystack # pip install whoosh # pip install jieba 三 Haystack的安装配置 1

Lucene全文检索的基本原理

主宰稳场 提交于 2019-12-04 08:39:17
转下这篇相当不错的Lucene的基本原理介绍! 一、总论 根据 http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的数据总体分为两种: 结构化数据 和 非结构化数据 。 结构化数据: 指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据: 指不定长或无固定格式的数据,如邮件,word文档等。 当然有的地方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。 非结构化数据又一种叫法叫全文数据。 按照数据的分类,搜索也分为两种: 对结构化数据的搜索 :如对数据库的搜索,用SQL语句。再如对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。 对非结构化数据的搜索 :如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。 对非结构化数据也即对全文数据的搜索主要有两种方法: 一种是 顺序扫描法 (Serial Scanning): 所谓顺序扫描,比如要找内容包含某一个字符串的文件

Lucene: 全文检索的基本原理

不打扰是莪最后的温柔 提交于 2019-12-04 08:38:50
一、总论 根据 http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的数据总体分为两种: 结构化数据 和 非结构化数据 。 结构化数据: 指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据: 指不定长或无固定格式的数据,如邮件,word文档等。 当然有的地方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。 非结构化数据又一种叫法叫全文数据。 按照数据的分类,搜索也分为两种: 对结构化数据的搜索 :如对数据库的搜索,用SQL语句。再如对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。 对非结构化数据的搜索 :如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。 对非结构化数据也即对全文数据的搜索主要有两种方法: 一种是 顺序扫描法 (Serial Scanning): 所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾