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

sphinx给PHP加个给力的搜索功能

最近工作需要实现搜索功能,尝试了几种方案。虽然最终线上部署的还是最low的方案,但是中间的过程还是比较有意思的。业务根据关键字查找内容。关键字的出处多来源于标题,文章描述等。...因为不是模糊搜索,所以可以使用数据库的索引,加快搜索速度。但是效果依赖于分词,以及用户输入关键词匹配程度。...使用sphinx作为搜索引擎 sphinx支持全文搜索,所以在sphinx中查询到关键字对应内容id之后再通过数据库获取内容的全部数据。...但是sphinx需要额外的服务(也可以使用sphinxse,不过需要重新编译mysql),同时索引页会带来内存和储存空间的开销,同时也会涉及到索引实时更新的问题。...224256行数据,重建全量索引时间8.1秒,占用磁盘空间82.6M。 在业务高峰期重建索引容易引起意外 本地实验查询所使用的字是通过sphinx索引创建的字典生成。

97240

Sphinx&coreseek实现中文分词索引

sphinx是国外的一款搜索软件,但是本身不支持中文索引,coreseek在sphinx基础增加了中文分词功能,支持了中文索引。本文主要介绍Sphinx和coreseek的使用。 2....Sphinx使用流程 step1: Sphinx数据库数据创建索引,使用分词技术分别对单词存储记录id(当数据量大时较费时间) step2: 启动Sphinx服务器 step3: 查询程序首先将关键词发送给...Sphinx服务器查询,sphinx返回查询结果在原数据库表中的id(主键) step4: 查询程序根据返回的主键id在原数据库中取出相应记录 3..../searchd # 运行php测试 $ php api/test.php -h localhost 4. coreseek安装 coreseek在Sphinx基础支持了中文扩展,下载coreseek...增量索引 主表数据增加需要增加索引,如果数据量大,直接重建索引会很慢,可通过对增加的数据单独建立索引,再把建立的索引合并到主索引。

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

Sphinx + Coreseek 实现中文分词搜索

Sphinx + Coreseek 实现中文分词搜索 Sphinx Coreseek 实现中文分词搜索 全文检索 1 全文检索 vs 数据库 2 中文检索 vs 汉化检索 3 自建全文搜索与使用Google...您站点的新出现的内容往往不能及时被搜索到。 使用自建全文搜索,能够保证您站点新出现的内容能够”马上“被检索到。...Sphinx的特点: 高速创建索引:3分钟左右就可以创建近100万条记录的索引,而且採用了增量索引的方式,重建索引非常迅速。...如PHP,Python,Perl,Ruby等,因此你能够在大部分编程应用中非常方便地调用Sphinx的相关接口。 为MySQL设计了一个存储引擎插件。因此假设你在MySQL使用Sphinx。...其它数据库能够參考python数据源。   要查看配置的细节,能够訪问Coreseek/Sphinx(0.9)中文手冊了解详情和详细的配置參数。   配置文件的核心。

1.4K20

Coreseek:部门查询和增量索引代替实时索引

大家好,又见面了,我是全栈君 1.行业调查 索引系统需要通过主查询来获取所有的文档信息,一个简单的实现是整个表的数据到内存,但是这可能会导致整个表被锁定,并且使其它操作被阻止(例如:在MyISAM格款式INSERT...CoreSeek/Sphinx支持一种被称为 区段查询的技术. 首先,CoreSeek/Sphinx数据库中取出文档ID的最小值和最大值。将由最大值和最小值定义自然数区间分成若干份,一次获取数据。...1000 sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end 仅仅要在配置文件中面写三条语句就可以 from后面要跟的是你数据库里面的表名...,如这里的表就是document 2.增量索引取代实时索引 有这么一种常见的情况:整个数据集很大,以至于难于常常性的重建索引,可是每次新增的记录却相当地少。...sph_counter ( counter_id INTEGER PRIMARY KEY NOT NULL, max_doc_id INTEGER NOT NULL ); # in sphinx.conf

28830

如何在Ubuntu 16.04安装和配置Sphinx

将MySQL安装在您的服务器。如果您在生产环境使用,我建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库,提供安全可靠、伸缩灵活的按需云数据库服务。...第1步 - 安装Sphinx 在Ubuntu安装Sphinx非常简单,因为它位于本机包存储库中。使用apt-get安装它。...第2步 - 创建测试数据库 接下来,我们将使用随包提供的SQL文件中的示例数据来设置数据库。这将允许我们测试Sphinx搜索是否在以后工作。 让我们将示例SQL文件导入数据库。...quit 现在您有一个填充了示例数据的数据库。接下来,我们将自定义Sphinx的配置。...这也将确保即使重新启动服务器,Sphinx守护程序也会启动。 第6步 - 测试 现在一切都已设置好,让我们测试一下搜索功能。使用MySQL接口连接到SphinxQL(在端口9306)。

3.1K00

如何在CentOS 7安装和配置Sphinx

介绍 Sphinx是一个开源搜索引擎,允许全文搜索。众所周知,它能非常有效地对大数据进行搜索。要编制索引的数据通常来自非常不同的来源:SQL数据库,纯文本文件,HTML文件,邮箱等。...将MySQL安装在您的服务器。如果您在生产环境使用,我建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库,提供安全可靠、伸缩灵活的按需云数据库服务。...腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL 数据库引擎,并针对数据库引擎的性能进行了优化。...第2步 - 创建测试数据库 在这里,我们将使用随包提供的SQL文件中的示例数据来设置数据库。这将允许我们测试Sphinx搜索是否在以后工作。 让我们将示例SQL文件导入数据库。...sql_db:存储数据的数据库的名称。在我们的例子中,这是测试。 sql_query:将数据从数据库转储到索引的查询。

2.8K23

IEEE S&P 2022丨速度提升达4-6个数量级,港科大、星云Clustar联合提出隐私保护的在线机器学习新框架

Sphinx 通过对隐私保护场景下推理和训练协议进行系统优化,在模型性能、计算效率和隐私保护之间取得平衡 在 MNIST 和 CIFAR10 的图片分类训练和推理任务的实验结果表明,Sphinx 能够在不暴露用户隐私的情况下显着减少训练时间...我们在实际进行模型训练的过程中发现,通过使用同态加密技术隐藏神经网络每层中的偏置参数 和其梯度,由于可用的明文梯度信息的不完整,我们可以有效地降低攻击者利用经过差分隐私保护的梯度数据重建数据的风险。...另外,对于推理数据来说,论文中证明了Sphinx基于秘密共享的安全推理协议能够在密码学安全等级保护用户的推理数据不发生任何泄露。 为了最大化上述训练和推理协议在实际部署中的性能。...由于Sphinx使用了差分隐私技术对部分的模型参数进行了保护,部分模型参数是通过添加噪声之后以明文的形式保存在服务器的。...实验表明Sphinx显着加速了隐私保护的训练和推理性能,为在深度神经网络实现落地可用的隐私保护在线学习服务迈出了重要的一步。

73220

科学软件十条简单编程原则

在GitHub,Bitbucket和GitLab等代码共享站点,您的README文件显示在项目的主页面上。...R的Sphinxsphinx-doc.org),perldoc,Javadoc和Roxygen(https://github.com/klutometis/roxygen)等软件可以生成文档,甚至可以阅读您的注释并使用它们生成详细的...尽管Sphinx是为了托管Python的文档而开发的,但它与语言无关,这意味着它可以适用于您的项目所使用的任何语言。...阅读规则6中介绍的文档是一个与语言无关的文档托管平台,可以在每次推送到存储库时重建文档,确保您的文档始终是最新的。...在您的文档中包含引文信息对于尚未在传统学术期刊发表的软件尤其重要,因为该期刊会为其分配DOI。仅仅因为您的软件未发布并不意味着您无法获得DOI - 您的工作值得信赖。

86220

php简单使用sphinx 以及增量索引和主索引来实现索引的实时更新

\bin\下,并重命名为sphinx.conf; 修改E:\PRO\2\sphinx\bin\sphinx.conf文件的数据库配置,这里根据自己的情况进行配置即可(如下图) bin 目录 Minimal...= mysql #数据库类型 sql_host = localhost #数据库地址...WHERE id=$id #命令行查询时,从数据库读取原始数据信息 } # 增量索引数据原定义 source article_delta :article_main { sql_query_pre...添加数据库内容时更新索引文件原理: 1.新建一张表,记录一下一次已经创建好索引的最后一条记录的ID 2.当索引时,然后从数据库中取出所有ID大于上面那个sphinx中的那个ID的数据, 这些就是新的数据...脚本隐藏执行) 加入计划任务的步骤: 计划任务 创建任务 为任务填写一个名称 任务名称 触发任务的条件 选择你要执行的bat脚本 完成查看列表 现在我们向数据库添加一些数据,再添加之前,我们先去看一下数据库的数据

1K30

追本溯源:Oracle 只读表空间的探索实践

1将表空间设为只读,可以带来如下好处 1.1 减少数据库备份和恢复时间 对于只读表空间,只需要在第一备份时进行备份,在以后的备份中不需要再对备份过的只读表空间进行备份。...当表空间设置为只读后,在启动和关闭时就不会对只读表空间对应的数据文件进行处理,从而减少了数据库启动和关闭的时间。...1.3 防止对数据的误操作 只读表空间可以限制如下的操作: Insert Update Delete Truncate Create 因为这些操作需要修改数据文件的 block,而对于只读表空间的表字段的修改...1.4 分区表的数据过期化处理 前提是分区表的每个分区都在单独的表空间,当对应分区过期后,可以直接将该分区对应的表空间设置为只读,那么对应分区的数据也就不能被修改。...3重建控制文件对只读表空间和临时表空间的影响 3.1 对只读表空间 假如存在一个只读的表空间,那么在重建控制文件之后,read-only 的数据文件会重命名为 MISSING00005 的格式,最后是5

84930

追本溯源:Oracle 只读表空间的探索实践

1 将表空间设为只读,可以带来如下好处 1.1 减少数据库备份和恢复时间 对于只读表空间,只需要在第一备份时进行备份,在以后的备份中不需要再对备份过的只读表空间进行备份。...当表空间设置为只读后,在启动和关闭时就不会对只读表空间对应的数据文件进行处理,从而减少了数据库启动和关闭的时间。...1.3 防止对数据的误操作 只读表空间可以限制如下的操作: Insert Update Delete Truncate Create 因为这些操作需要修改数据文件的 block,而对于只读表空间的表字段的修改...1.4 分区表的数据过期化处理 前提是分区表的每个分区都在单独的表空间,当对应分区过期后,可以直接将该分区对应的表空间设置为只读,那么对应分区的数据也就不能被修改。...3 重建控制文件对只读表空间和临时表空间的影响 3.1 对只读表空间 假如存在一个只读的表空间,那么在重建控制文件之后,read-only 的数据文件会重命名为 MISSING00005 的格式,最后是

2.2K30

【总结】两个月的工作任务总结

一、功能模块介绍 1.订单系统 数据库关联 [6 张数据库的关联查询] 订单信息列表 订单信息表 — order 支付方式表 — paymentmethod 订单详情表 — orderlist 优惠券信息表...— stockcategory 库存仓库关联表— stockskuwarehouse 库存商品关联表— stockoffer 用户商品关联表— useroffer GOODS 数据库 待入库商品状态更新...看哪些地方有用到这些数据表(数据表是为业务需求所设计) (2) 看已有的功能代码,代码的实现逻辑 不要低估别人的代码能力(如果已经有的话) 先整体后细节,业务逻辑不明白会使得对细节的理解有一定的难度,但整体先大致的了解一个接口都干了哪些事会帮助理清逻辑...实践是检验理论和巩固知识最有效的方式 学习带来的思维敏捷可以很大程度提升自我认可度 (2) 多反思自己,少批评别人 被自己惯出来的优越感会让自己忘乎所以,尊重别人,就是对自己最大的尊重 让自己真正意义的变优秀...Sphinx 配置 source keyword { # 配置数据库基本信息 charset_type = mysql sql_host = 127.0.0.1

1.3K20

MongoDB权威指南学习笔记(4)--应用管理和服务器管理

Mongo 应用管理和服务器管理 数据管理 配置身份验证 admin和local是两个特殊的数据库,它们当中的用户可对任何数据库进行操作,这两个数据库中的用户可作为超级用户 在开启安全检查的数据库呗启动前...("test_user","123456") // 创建只读权限用户 db.addUser("read_user","123456",true) 运行addUser时,必须拥有相应数据库的写入权限...addUser的第三个参数为readOnly,设置为true时,为只读 使用–auth参数重启服务器,以启用安全检查 身份验证的工作原理 数据库中的用户时作为文档呗存储在system.users集合中的...关闭主节点,执行上述步骤 在分片集群建立索引 在分片集群建立索引。...–config 额外加载配置文件,未在命令行中指定的玄仙将使用配置文件中的参数 停止mongodb 最简洁的方法是使用shutdown命令,必须在admin数据库执行 use admin db.shutdownServer

54920

pg数据库有雷锋?用户已有权限为何无故消失?

多年从事一线的数据库运维工作,有丰富项目经验、维护经验和调优经验,专注于数据库的整体运维。 越来越多的互联网企业在使用postgresql数据库,我们也不例外。...发现问题 昨天开发请我建立了一个只读用户abc_tmp_test用户,并且将mkl_rw用户下的32个表授权给只读用户用。ok,请简单轻松的一个需求,很快就完成了。...也就是我授权的32个表的select权限给只读用户,过一段时间之后,这32个表中的一些表的权限会慢慢消失!...是的,如果table被drop了之后,再次重建,此时原本授权给只读用户的权限,也会消失。 向开发确认,是否有drop之后重建表的操作,开发确认,有段程序确实会定期的逐个drop表后重建表!!...为什么要进行drop表之后重建表的操作?开发说是通过调用框架清理数据,框架就是这么干的。 ok,明白了目的是为了清理数据,而不涉及到表结构的修改,那么其实用truncate来清理就可以了。

1K50

【迅搜09】索引管理(二)增删改操作

这些应用往往修改的频率不高,而且就像我们的数据库设计,对于状态为未发布的文章,也完全没有必要进搜索引擎。大部分情况下,其实更多的前端调用还是在搜索。...另外包括 Sphinx ,它对增量索引的支持都还没 XS 好呢(Sphinx绑定 MySQL 后全量索引速度非常快,它不推荐增量索引)。...也就是说,这个更新也不是传统数据库层面的更新,而是类似于很多 OLAP 大数据数据库的处理方式。这样的操作就会带来几个问题,我们来看下。...由可知,如果我们是针对大量数据的全量新建或者重建索引,那么 add() 的效率更好。...为确保重建的顺利完成,在重建时,不要对同一个项目开启多个进程、连接,避免同时交替重建引发错乱。

18510

Elasticsearch探索: Reindex API

Reindex可以直接在Elasticsearch集群里面对数据进行重建,如果你的mapping因为修改而需要重建,又或者索引设置修改需要重建的时候,借助Reindex可以很方便的异步进行重建,并且支持跨集群间的数据迁移...这个没有操作将被报告在响应体的 noop 计数器。 delete 如果您的脚本决定必须删除该文档,请设置ctx.op="delete"。删除将在响应体的 deleted 计数器中报告。..."dest": { "index": "sphinx-zhuanti-21.01.29-190921" }, "script": { "source": "ctx....索引或查询性能是否支配该流程取决于许多因素,如正在重建索引的文档和进行reindexing的集群。...相反,如果您使用零副本进行索引,然后在提取完成时启用副本,则恢复过程本质是逐字节的网络传输。 这比复制索引过程更有效。

2.1K11

PHP+MySQL+sphinx+scws实现全文检索功能详解

sphinx 配置文件解析 source:数据源,数据是从什么地方来的。 index:索引,当有数据源之后,从数据源处构建索引。索引实际就是相当于一个字典检索。...,用户名,密码,数据库名等。...## 有的字符串,虽然长度很长,但是实际并没有使用那么长的字符,所以在Sphinx并不会收录所有的字符,而是给每个属性一个缓存作为长度限制。...## 但是这个时候索引就会很大,于是我们就想到了一个方法,我们在建立索引的时候,先将字符串值从数据库中取出,暂存,排序。...sql_query_killlist = SELECT id FROM documents WHERE edited =@last_reindex ## 下面几个压缩解压的配置都是为了一个目的:让索引重建的时候不要影响数据库的性能表现

2.7K32

shpinx的安装与使用测试

Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速度是1.8MB/秒) 高性能搜索(在2-4 GB的文本搜索,平均0.1秒内获得结果) 高扩展性(实测最高可对100GB的文本建立索引...| |-sphinx.conf.dist |-misc\ |-src\ 配置 sphinx的示例配置文件在etc文件夹中。...复制sphinx-min.conf.dict 到sphinx.conf 主索引配置。对于中文,source中需要指定sql连接字符集,避免拿到的数据是乱码。...可以使用sql_query_post执行指定的sql语句,将数据保存到数据库中。...sphinx可以设置多个索引。虽然sphinx生成索引很快,但是对于大量数据,每次数据变更多重新建索引,还是会有很大的额外开销。目前主要的解决方案是通过更新增量索引实现sphinx数据实时更新。

80430
领券