首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏超级架构师

    全文搜索全文搜索 PostgreSQL 或 ElasticSearch

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

    3.1K30编辑于 2022-04-27
  • 来自专栏Django中文社区

    简单全文搜索

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

    2.5K60发布于 2018-04-17
  • 来自专栏Pengcheng's Blog

    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分钟更新一次,所以在执行第一次搜索更新之前,无论你搜索什么都没有结果。 无法搜索加密文件 服务器无法对加密文件进行索引,因为它们被加密了。

    1.6K10编辑于 2023-07-24
  • 来自专栏开源部署

    Solr实现全文搜索

    Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。 Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务。 跳转到文档末尾:G <fieldType name="text_ik" >   <analyzer /> </fieldType> 1.2.2.2 业务字段配置 业务字段判断标准: 1、在搜索时是否需要在此字段上进行搜索 需要用到的字段: 1、商品id 2、商品title 3、卖点 4、价格 5、商品图片 6、商品分类名称 7、商品描述 Solr中的业务字段: 1、id——》商品id 其他的对应字段创建solr的字段。

    1.4K10编辑于 2022-07-27
  • 来自专栏Hongten

    lucene(全文搜索)_建立索引_根据关键字全文搜索_源码下载

    包加入到项目构建路径下面...看看----->项目结构 /lucene_0100_helloworld/src/com/b510/lucene/LuceneIndex.java 1 /** 2 * 3 Version.LUCENE_35)); 51 52 writer = new IndexWriter(directory, iwc); 53 // 3. .创建IndexReader 101 IndexReader reader = IndexReader.open(directory); 102 // 3. Query 105 // 创建parser来确定要搜索的文件的内容,第二个参数表示搜索的域 106 QueryParser parser = new QueryParser 131 } 132 133 } /lucene_0100_helloworld/src/com/b510/lucene/LuceneIndexTest.java 1 /** 2 * 3

    1.4K20发布于 2018-09-13
  • 来自专栏思考是一种快乐

    Elasticsearch全文搜索与TFIDF

    norm(d) = 1 / √numTerms 即: 1 / 词出现次数的平方根 二、elasticsearch的全文搜索 elasticsearh的全文搜索涉及到两个重要的方面:相关性(Relevance TF/IDF 相关性方法分析 做一次搜索,带explain,elasticsearch会返回如何匹配。 比如在title字段中进行全文搜索,关键词为'python' GET course/_search?

    2.4K10发布于 2019-09-23
  • 来自专栏测试帮日记

    ElasticSearch构建全文搜索系统

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

    1.7K30发布于 2020-03-25
  • 来自专栏全栈程序员必看

    02.全文搜索ES

    全文搜索 1.介绍 elasticsearch 6 (和elasticsearch 5 的区别在于,root用户权限、一个库只能建立一个表) elasticsearch 6一个索引只能建立一张表 1.1 文本搜索引擎: 优点:搜索快; 缺点:占用空间。 solr需要依赖zk1. 1.2 elasticSearch(搜索引擎)的算法 倒排索引(在内容上建立索引,用内容匹配索引); btree mysql数据库的索引方式。 "id":2, "name":"operation meigong river", "doubanScore":8.0, "actorList":[ {"id":3, "name":"zhang han yu"} ] } PUT /movie_index/movie/3 { "id":3, "name":"incident red sea",

    1.1K20编辑于 2022-06-30
  • 来自专栏python前行者

    python全文搜索库Whoosh

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

    1.7K00发布于 2020-01-13
  • 来自专栏人生代码

    带你认识 flask 全文搜索

    01 全文搜索引擎简介 对于全文搜索的支持不像关系数据库那样是标准化的。 有几种开源的全文搜索引擎:Elasticsearch,Apache Solr,Whoosh,Xapian,Sphinx等等,如果这还不够,常用的数据库也可以像我上面列举的那些专用搜索引擎一样提供搜索服务 05 全文搜索抽象化 正如我在本章的介绍中所说的,我希望能够轻松地从Elasticsearch切换到其他搜索引擎,并且我也不希望将此功能专门用于搜索用户动态,我更愿意设计一个可复用的解决方案,如果需要, ('posts', 'one two three four five', 3, 3)([14], 7) 我发出的查询返回了七个结果。 现在Post模型会自动为用户动态维护一个全文搜索索引。

    5K20发布于 2019-11-24
  • 来自专栏Hongten

    lucene(全文搜索)_删除索引

    项目结构大家可以先看看:lucene(全文搜索)_根据内容建立索引_源码下载 索引的删除操作: 1 /** 2 * 索引的删除 3 */ 4 public void } 27 } 28 } 29 } 测试代码: 1 @Test 2 public void testDelete(){ 3

    1.2K20发布于 2018-09-13
  • 来自专栏Hongten

    lucene(全文搜索)_luceneweb例子

    由于我没"D:\opt\lucene\index",所以不能搜索出东东... -- 2 Licensed to the Apache Software Foundation (ASF) under one or more 3 contributor license -- 2 Licensed to the Apache Software Foundation (ASF) under one or more 3 contributor license -- 2 Licensed to the Apache Software Foundation (ASF) under one or more 3 contributor license -- 2 Licensed to the Apache Software Foundation (ASF) under one or more 3 contributor license

    1.6K20发布于 2018-09-13
  • 来自专栏全栈程序员必看

    pycharm全文搜索_python搜索关键词

    PyCharm使用遇到的问题四 Q4:在pycharm中如何全局搜索关键词; A4:按照路径Edit>>Find>>Find in Path 进入图一界面;在搜索框中输入要查找的关键词,这里以“ax1 为例”,选择在In Project中查询可获得相应脚本;退出搜索按esc即可 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/174566.html原文链接:

    1.1K10编辑于 2022-09-27
  • 来自专栏Linux运维技术之路

    DSL查询之全文搜索详解

    如下图,可以很方便的帮助你构筑这种体系 第二点: 分类别,从上层理解,而不是本身 比如Full text Query中,我们只需要把如下的那么多点分为3大类,你的体系能力会大大提升 第三点: 知识点还是 标题 title 字段是一个 string 类型( analyzed )已分析的全文字段,这意味着查询字符串本身也应该被分析。 分析查询字符串 。 将查询的字符串 QUICK! 用 term 查询在倒排索引中查找 quick 然后获取一组包含该项的文档,本例的结果是文档:1、2 和 3 。 为每个文档评分 。 我们可以将其设置为某个具体数字,更常用的做法是将其设置为一个百分数,因为我们无法控制用户搜索时输入的单词数量: GET /test-dsl-match/_search { "query": { 可以使用该query_string查询创建一个复杂的搜索,其中包括通配符,跨多个字段的搜索等等。尽管用途广泛,但查询是严格的,如果查询字符串包含任何无效语法,则返回错误。

    89210编辑于 2024-02-29
  • 来自专栏微信终端开发团队的专栏

    微信全文搜索优化之路

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

    10K43发布于 2017-10-19
  • 来自专栏微信终端开发团队的专栏

    微信全文搜索优化之路

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

    2.7K20编辑于 2023-02-20
  • 来自专栏前端导学

    Sphinx 全文搜索引擎

    Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。 ?

    1.7K10发布于 2019-05-26
  • 来自专栏大数据与微服务架构

    全文搜索引擎 ElasticSearch

    CPU:cpu的时钟频率对es的性能影响并不太大,但是文档的插入和文档搜索的性能取决于并发线程数,而并发线程数取决于CPU核心的个数。

    90610发布于 2020-04-11
  • 来自专栏MongoDB中文社区

    纯 MongoDB 实现中文全文搜索

    本文首先描述遇到的业务需求和困难,介绍了MongoDB和Atlas Search对全文搜索的支持现状,然后从全文搜索原理讲起,结合MongoDB全文搜索实现,挂接中文分词程序,达到纯MongoDB社区版实现中文全文搜索的目标 0 "it is what it is" 1 "what is it" 2 "it is a banana" 上面 3 个文档的倒排索引大概如下: "a": {2} "banana": { 而正排的话,只能一个一个文档找过去,找完3个文档才能找到(也就是$regex的方式),这种情况下的耗时大部分是无法接受的。 在产品层面,可以对用户查询的词长度进行限制,比如最多3个词(即2个空格)且总长度不要超过10个汉字(或20个字母,每汉字按两个字母计算),这样可以控制相对快一点。 期待用上内建中文全文搜索支持的那一天。

    6.3K20编辑于 2022-01-26
  • 来自专栏技术路漫漫

    全文搜索实战1-简单网页抓取及搜索

    本文基于jsoup和elasticsearch,实现了从指定网页抓取内容,并存储到es中,进而通过es的搜索功能实现全文检索 基础环境搭建 es是基于docker安装,鉴于当前springboot对应的是

    1.1K00发布于 2020-07-11
领券