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

全文搜索全文搜索 PostgreSQL 或 ElasticSearch

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

2.3K30

简单全文搜索

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

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

    seafile配置全文搜索

    Seafile 支持使用 ElasticSearch 服务实现全文搜索。...背景 本文主要是基于本博客另一篇文章 自建 seafile pro 网盘 而写的教程 参考: 全文搜索官方文档 搜索选项 可以在 seafevents.conf 中设置 [INDEX FILES] 选项来控制文件搜索的行为...vim /opt/seafile/data/seafile/conf/seafevents.conf 如果是跟着本博客做的,对于 pro 版,选择已经默认开启了全文搜索,可以跳过这小节。...need to clear the search index and update the index again. index_office_pdf=false 启用 Office/PDF 文件的全文搜索...搜索关键字时,没有返回结果 搜索索引默认每10分钟更新一次,所以在执行第一次搜索更新之前,无论你搜索什么都没有结果。 无法搜索加密文件 服务器无法对加密文件进行索引,因为它们被加密了。

    80510

    ElasticSearch构建全文搜索系统

    前言 Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎,通过它我们可以构建出一个强大的全文搜索系统,解决诸如文章检索慢,商品检索慢、MySQL的like查询慢这样的问题。...4.查询数据 搜索chenqionghe curl -s -X GET 'localhost:9200/book/_search?...localhost:9200/book/_close' # 开启 curl -XPOST 'localhost:9200/book/_open' 总结 通过Elasticsearch,我们可以快速构建出一个强大的全文搜索系统...倒排索引为搜索而生,先对需要索引的字段进行分词,再通过词直接匹配出文档,速度非常快,这是优点。...但是,相比数据库采用的 B 树索引,它的写入和更新性能都比较差,因此倒排索引也只是适合全文搜索,不适合更新频繁的交易类数据。

    1.3K30

    python全文搜索库Whoosh

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

    1.3K00

    带你认识 flask 全文搜索

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

    3.5K20

    微信全文搜索优化之路

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

    1.7K20

    微信全文搜索优化之路

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

    9.2K42

    纯 MongoDB 实现中文全文搜索

    本文首先描述遇到的业务需求和困难,介绍了MongoDB和Atlas Search对全文搜索的支持现状,然后从全文搜索原理讲起,结合MongoDB全文搜索实现,挂接中文分词程序,达到纯MongoDB社区版实现中文全文搜索的目标...那么能否仅仅基于MongoDB社区版实现中文全文搜索呢?...带着这个问题,作者深入到MongoDB文本索引的文档、代码中去,发现了些许端倪,并逐步实现和优化了纯MongoDB实现中文全文搜索的方案,下文将从全文搜索的原理讲起,详细描述这个方案。...倒排索引是所有支持全文搜索的数据库的基础,无论是PostgreSQL还是MySQL都是用它来实现全文搜索的,MongoDB也不例外,这也是我们最终解决问题的基础底座。...期待用上内建中文全文搜索支持的那一天。

    5.4K20
    领券