首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

全文搜索全文搜索 PostgreSQL 或 ElasticSearch

在本文中,我记录了在 PostgreSQL(使用 Django ORM)和 ElasticSearch 中实现全文搜索 (FTS) 时一些发现。...作为一名 Django 开发人员,我开始寻找可用选项来在大约一百万行标准大小上执行全文搜索。有两个值得尝试选项:PostgreSQL 和 ElasticSearch。...在深入研究我发现之前,让我们澄清一下全文搜索 (FTS)(或“搜索”)与数据库过滤器或查询之间区别。“搜索”涉及从零开始,然后向其中添加结果。数据库过滤从一个集合开始,然后根据条件从中删除条目。...过滤不适用于模糊输入,但可以使用模糊输入完成“搜索”。 PostgreSQL 全文搜索大部分项目都使用 Django Web 框架和 PostgreSQL。...因此,如果项目不打算拥有数千万条记录或大规模数据,Postgresql 全文搜索将是最佳选择。 术语 词干提取:这是将单词简化为其根形式过程,以确保该单词变体在搜索过程中与结果匹配。

2.2K30

简单全文搜索

搜索是一个复杂功能,但对于一些简单搜索任务,我们可以使用 Django Model 层提供一些内置方法来完成。现在我们来为我们博客提供一个简单搜索功能。...当用户输入某个关键词进行搜索后,我们希望为用户显示标题和正文中含有被搜索关键词全部文章。...整个搜索过程如下: 用户在搜素框中输入搜索关键词,假设为 “django”,然后用户点击了搜索按钮提交其输入结果到服务器。...当然这样搜索功能是非常简略,难以满足一些复杂搜索需求。编写一个搜索引擎是一个大工程,好在 django-haystack 这款第三方 app 为我们完成了全部工作。...使用它我们可以实现更加复杂搜索功能,比如全文检索、按搜索相关度排序、关键字高亮等等类似于百度搜索功能,功能十分强大。

1.9K60
您找到你想要的搜索结果了吗?
是的
没有找到

Solr实现全文搜索

Solr 是Apache下一个顶级开源项目,采用Java开发,它是基于Lucene全文搜索服务器。...Solr提供了比Lucene更为丰富查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务。...2、Solr中字段必须是先定义后使用。 1.2.2.1 中文分析器配置 第一步:使用IK-Analyzer。把分析器文件夹上传到服务器。 第二步:需要把分析器jar包添加到solr工程中。...跳转到文档末尾:G   1.2.2.2 业务字段配置 业务字段判断标准: 1、在搜索时是否需要在此字段上进行搜索...例如:商品名称、商品卖点、商品描述 2、后续业务是否需要用到此字段。例如:商品id。

85510

02.全文搜索ES

全文搜索 1.介绍 elasticsearch 6 (和elasticsearch 5 区别在于,root用户权限、一个库只能建立一个表) elasticsearch 6一个索引只能建立一张表 1.1...文本搜索引擎: 优点:搜索快; 缺点:占用空间。...solr需要依赖zk1. 1.2 elasticSearch(搜索引擎)算法 倒排索引(在内容上建立索引,用内容匹配索引); btree mysql数据库索引方式。...type 类似于rdbmstable,但是与其说像table,其实更像面向对象中class , 同一Json格式数据集合。...,与es文档(分词处理并建立了索引)之间相关度高低 4.ES集群 4.1 节点、分片、索引 ==节点:==一个节点就是一个es服务器,es集群中,主节点负责集群管理和任务分发,一般不负责文档增删改查

66020

ElasticSearch构建全文搜索系统

前言 Elasticsearch 是一个分布式、可扩展、实时搜索与数据分析引擎,通过它我们可以构建出一个强大全文搜索系统,解决诸如文章检索慢,商品检索慢、MySQLlike查询慢这样问题。...——苏格拉底 8 chenqionghe喜欢运动,绳命是如此精彩,绳命是如此辉煌 我们想像这是千万级别的表,最后需要实现传入关键字,返回相应文章 例如:搜索运动返回页码1,2,3,5,7,8对应文章...localhost:9200/book/_close' # 开启 curl -XPOST 'localhost:9200/book/_open' 总结 通过Elasticsearch,我们可以快速构建出一个强大全文搜索系统...倒排索引为搜索而生,先对需要索引字段进行分词,再通过词直接匹配出文档,速度非常快,这是优点。...但是,相比数据库采用 B 树索引,它写入和更新性能都比较差,因此倒排索引也只是适合全文搜索,不适合更新频繁交易类数据。

1.2K30

Elasticsearch全文搜索与TFIDF

为了消除文档本身大小影响,通常,它定义是: TF = 某个词在文档中出现次数 / 文档总词数 也有其他表示方法,在Elasticsearch (lucene)中使用方法是 tf(t...通常,它计算方法是: IDF=log(语料库中文档数/(包含该词文档数+1)) 如果所有文章都包涵某个词,那个词IDF=log(1)=0, 即重要性为零。停用词IDF约等于0。...norm(d) = 1 / √numTerms 即: 1 / 词出现次数平方根 二、elasticsearch全文搜索 elasticsearh全文搜索涉及到两个重要方面:相关性(Relevance...TF/IDF 相关性方法分析 做一次搜索,带explain,elasticsearch会返回如何匹配。...比如在title字段中进行全文搜索,关键词为'python' GET course/_search?

1.8K10

Django 博客实现简单全文搜索

作者:HelloGitHub-追梦人物[1] 文中所涉及示例代码,已同步更新到 HelloGitHub-Team 仓库[2] 点击本文最下方“阅读原文”即可获取 搜索是一个复杂功能,但对于一些简单搜索任务...现在我们来为我们博客提供一个简单搜索功能。 概述 博客文章通常包含标题和正文两个部分。当用户输入某个关键词进行搜索后,我们希望为用户显示标题和正文中含有被搜索关键词全部文章。...整个搜索过程如下: 用户在搜素框中输入搜索关键词,假设为 “django”,然后用户点击了搜索按钮提交其输入结果到服务器。...当然这样搜索功能是非常简略,难以满足一些复杂搜索需求。编写一个搜索引擎是一个大工程,好在 django-haystack 这款第三方 app 为我们完成了全部工作。...使用它我们可以实现更加复杂搜索功能,比如全文检索、按搜索相关度排序、关键字高亮等等类似于百度搜索功能,功能十分强大。

67220

python全文搜索库Whoosh

/stable/ pypi:https://pypi.python.org/pypi/Whoosh/#downloads 安装 pip install Whoosh Whoosh是一个纯python全文搜索库...大意:Whoosh是索引文本及搜索文本类和函数库。它能让你开发出一个个性化经典搜索引擎。...例如,如果你在写博客选择(或者说博客搜索)程序,你可以用Whoosh添加一个让用户搜索博客条目的函数 因为做是中文全文检索需要导入jieba工具包以及whoosh工具包 Schema 有两个field...QueryParser构造函数第一个参数是默认要搜索field。...这个field type不可搜索。这对于你想在搜索结果中展示给用户文档信息很有用。 whoosh.fields.KEYWORD 这个类型针对于空格或逗号间隔关键词设计。可索引可搜索(部分存储)。

1.2K00

带你认识 flask 全文搜索

01 全文搜索引擎简介 对于全文搜索支持不像关系数据库那样是标准化。...有几种开源全文搜索引擎:Elasticsearch,Apache Solr,Whoosh,Xapian,Sphinx等等,如果这还不够,常用数据库也可以像我上面列举那些专用搜索引擎一样提供搜索服务...05 全文搜索抽象化 正如我在本章介绍中所说,我希望能够轻松地从Elasticsearch切换到其他搜索引擎,并且我也不希望将此功能专门用于搜索用户动态,我更愿意设计一个可复用解决方案,如果需要,...对于搜索支持,我将定义我自己SearchableMixin类,当它被添加到模型时,可以自动管理与SQLAlchemy模型关联全文索引。...这两行代码设置了每次提交之前和之后调用事件处理程序。现在Post模型会自动为用户动态维护一个全文搜索索引。

3.4K20

Mysql全文搜索match against用法

1.使用Mysql全文检索fulltext先决条件 表类型必须是MyISAM 建立全文检索字段类型必须是char,varchar,text 2.建立全文检索先期配置 由于Mysql默认配置是索引长度是...,对于大数量表来说,先加载数据再来定义全文索引 速度要远远优于在一个已经定义好全文索引表里面插入大量数据速度。...against()中定义是所要搜索字符串以及要求数据 库通过哪种模式去执行全文索引搜索查询。下面通过一个例子分别介绍一下fulltext所支持3中搜索模式。...MySQL全文索引与中文分词总结及一般关键词搜索流程 http://www.tzlink.com/info/show.php?...5.1+ 全文检索分词插件 http://hi.baidu.com/start_and_end/blog/item/6d6ab918b7d3800334fa412e.html 家用一下搜索引擎就会发现

2.7K60

DSL查询之全文搜索详解

标题 title 字段是一个 string 类型( analyzed )已分析全文字段,这意味着查询字符串本身也应该被分析。 分析查询字符串 。 将查询字符串 QUICK!...frequency,即词 quick 在所有文档 title 字段中出现频率),以及字段长度(即字段越短相关度越高)相结合计算方式。...我们可以将其设置为某个具体数字,更常用做法是将其设置为一个百分数,因为我们无法控制用户搜索时输入单词数量: GET /test-dsl-match/_search { "query": {...无论这个值设置成什么,至少包含一个词项文档才会被认为是匹配。...然后查询在返回匹配文档之前独立分析每个拆分文本。 可以使用该query_string查询创建一个复杂搜索,其中包括通配符,跨多个字段搜索等等。

8510

微信全文搜索优化之路

前言 基于本地数据全文搜索(Full-Text-Search,FTS)在移动应用上扮演着重要角色。...业务独立性 微信核心业务是联系人和消息,而微信全文搜索无论是在建立索引、更新索引或者删除索引时,都需要处理大量数据,为了使得全文搜索不影响微信核心业务,采用如下存储架构: 独立DB、读写分离:微信全文搜索在整体架构上独立于主业务...我们统计过,从微信5.4版本到6.5.7版本,微信全文搜索各个任务平均搜索时间增长超过10倍,给微信全文搜索带来巨大挑战。...这个分词规则原因主要是在微信对全文搜索结果排序需求主要是其他属性排序,并非依据文档相关性排序。即,全文搜索部分只需要找到存在关键词文档,并不关心文档中存在几个关键词。...最后SQL如下: 特殊优化——聊天记录搜索优化 微信全文搜索中有一个比较特殊搜索任务,就是聊天记录。

8.8K42

微信全文搜索优化之路

前言 ---- 基于本地数据全文搜索(Full-Text-Search,FTS)在移动应用上扮演着重要角色。...业务独立性 微信核心业务是联系人和消息,而微信全文搜索无论是在建立索引、更新索引或者删除索引时,都需要处理大量数据,为了使得全文搜索不影响微信核心业务,采用如下存储架构: 独立DB、读写分离:微信全文搜索在整体架构上独立于主业务...我们统计过,从微信5.4版本到6.5.7版本,微信全文搜索各个任务平均搜索时间增长超过10倍,给微信全文搜索带来巨大挑战。...这个分词规则原因主要是在微信对全文搜索结果排序需求主要是其他属性排序,并非依据文档相关性排序。即,全文搜索部分只需要找到存在关键词文档,并不关心文档中存在几个关键词。...最后SQL如下: 特殊优化——聊天记录搜索优化 微信全文搜索中有一个比较特殊搜索任务,就是聊天记录。

1.4K20

Nebula 基于 ElasticSearch 全文搜索引擎文本搜索

[Nebula 基于全文搜索引擎文本搜索] 1 背景 Nebula 2.0 中已经支持了基于外部全文搜索引擎文本查询功能。...经过一番调研和讨论,所谓术业有专攻,文本搜索工作还是交给外部第三方全文搜索引擎来做,在保证查询性能基础上,同时也降低了 Nebula 内核开发成本。...2 目标 2.1 功能 2.0 版本我们只对 LOOKUP 支持了文本搜索功能。也就是说基于 Nebula 内部索引,借助第三方全文搜索引擎来完成 LOOKUP 文本搜索功能。...数据同步性能:既然我们使用了第三方全文搜索引擎,那不可避免是需要在第三方全文搜索引擎中也保存一份数据。...经过验证,第三方全文搜索引擎导入性能要低于 Nebula 自身数据导入性能,为了不影响 Nebula 自身数据导入性能,我们通过异步数据同步方案来进行第三方全文搜索引擎数据导入工作。

98100

全文搜索引擎 ElasticSearch

ElasticSearch观念转换: 索引:可以认为是数据库中一个Schema。 类型:逻辑上具有相同格式文档集合,可以和数据库中表概念类似。...文档:对所描述实体对象具体实例化,可以和数据库中行相对应。 字段:以Json键值对方式组织多个字段。字段可以是对象类型、数组类型或者核心数据类型,字段可以与数据库列对应。...部落节点:部落节点可以实现多个集群桥接。它可以作为两个集群间负载均衡器。它为后端多个集群提供了统一访问客户端。...如果你应用系统正在承受庞大流量负载,那么增加硬件扩展更多节点,把每个分片和副本分配到独占节点上会获得更大并行度提升查询效率。注意:(副本越多,向索引中插入文档效率就越低)。...CPU:cpu时钟频率对es性能影响并不太大,但是文档插入和文档搜索性能取决于并发线程数,而并发线程数取决于CPU核心个数。

63410
领券