当前位置: 首页 > news >正文

网站开发工作室挣钱吗房屋产权地址备案在那个网站做

网站开发工作室挣钱吗,房屋产权地址备案在那个网站做,开发龙岗网站建设,wordpress自适应商城Sphinx查询性能非常厉害#xff0c;亿级数据下输入关键字#xff0c;大部分能在0.01~0.1秒#xff0c;少部分再5秒之内查出数据。 Sphinx 官方文档#xff1a;http://sphinxsearch.com/docs/sphinx3.html极简概括#xff1a; 由C编写的高性能全文搜索引擎的开源组件亿级数据下输入关键字大部分能在0.01~0.1秒少部分再5秒之内查出数据。 Sphinx 官方文档http://sphinxsearch.com/docs/sphinx3.html极简概括 由C编写的高性能全文搜索引擎的开源组件C/S架构跨平台支持Linux、Windows、MacOS支持分布式部署并可直接适配MySQL。解决问题 因为MySQL的 like %keyword% 不走索引且全文索引不支持中文所以需要借助其它组件。适用于不经常更新的数据的全文搜索。同类产品 ElasticSearch、Solr、Lucene、Algolia、XunSearch。使用思路 发送给Sphinx关键字然后Sphinx返回id给PHPPHP再调用MySQL根据id查询。也就是帮着MySQL找id的MySQL走主键索引查询性能很高。API支持 Sphinx附带了三种不同的APISphinxAPI、SphinxSE和SphinxQL。SphinxAPI是一个可用于Java、PHP、Python、Perl、C和其他语言的原生库。SphinxSE是MySQL的一个可插拔存储引擎支持将大量结果集直接发送到MySQL服务器进行后期处理。SphinxQL允许应用程序使用标准MySQL客户端库和查询语法查询Sphinx。SQL扩展 Sphinx不仅限于关键字搜索。在全文搜索结果集之上您可以计算任意算术表达式、添加WHERE条件、排序依据、分组依据、使用最小值/最大值/AVG值/总和、聚合等。本质上支持成熟的SQL SELECT。 建表 CREATE TABLE articles (id int unsigned NOT NULL AUTO_INCREMENT,content varchar(16000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,PRIMARY KEY (id) ) ENGINEMyISAM AUTO_INCREMENT320974 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;亿级大数据源准备 决策分析 亿级的数据量还都得是中文如果是52个大小写字母和10个数字可以随机中文随机效果差最好是有能阅读通畅的数据源而不是随机汉字数据源。尝试寻找 尝试看了txt版的《三国演义》发现行数太少所以转变思维更大的数据量只能是长篇小说翻看了最长的小说也才22万行1行小说对应1条MySQL数据数据量还是太少虽然循环小说内容插入也行但还是差点意思。资源整合 程序员天天玩的就是数据这点小事难不倒我去网盘找txt小说资源合集https://www.aliyundrive.com/s/LBBg4ZvWip2/folder/63a138e95845afd3baa947db96342937033c254f 找到了如下35000本txt的小说。数据合并 下载了几千个txt小说需要用命令把这些合并成一个文件使用cat * all.txt方便PHP程序逐行读取。整合后的单个txt文件9.57个G。数据入库 大数据文件一次加载会把内存撑爆所以需要使用yield 生成迭代器去逐行读取文件。 set_time_limit(0);$file C:/Users/Administrator/Desktop/all.txt;/*** function 逐行读取大文件* param $file_name string 文件名* return Generator|object*/function readLargeFile($file_name) {$file fopen($file_name, rb);if (! $file) {return false;}while (! feof($file)) {$line fgets($file);if ($line ! false) {yield $line;}}fclose($file);}// 使用生成器逐行读取大文件$file_resource readLargeFile($file);if(! $file_resource) {echo 文件读取错误;die;}$db \Illuminate\Support\Facades\DB::table(articles);$arr [];foreach ($file_resource as $line) {//获取单行编码$from_charset mb_detect_encoding($line, UTF-8, GBK, GB2312, BIG5, CP936, ASCII);//转码操作因为有些是ANSIGBK的编码最好转换成UTF-8$utf8_str iconv($from_charset, UTF-8, $line);//遇见空行直接过滤if(in_array($utf8_str, [\n, \r, \n\r, \r\n])) {continue;}$arr[] [content $utf8_str];if(count($arr) 10000) {$db-insert($arr);$arr [];}}性能调优 MyISAM引擎 insert 发现1秒才1400行的插入速度不行得调整。 改为批量插入一次性插入10000行数据并修改/etc/my.cnf 里面的max_allowed_packet将1M改为512M。 优化后每秒2万的插入速度。 如果是InnoDB引擎 可以调整redo log 刷盘策略set global innodb_flush_log_at_trx_commit0。 并添加缓冲池innodb_buffer_pool_size大小为系统总内存的70%。 把max_allowed_packet将1M改为512M就行了。 数量检查 两万年后用SELECT count(*) FROM articles一看数据量109 450 000搞定。 性能测试 SELECT count(*) FROM articles where content like ‘%晴空万里%’找出来了1931个花了242秒。 编译安装并配置Sphinx Server 虚拟机里的CentOS记得要足够的空间用来存储数据 一个亿的数据占了系统很大空间系统存储空间所剩无几了/usr/local地方没地方存所以把Sphinx放到了/home下因为/dev/mapper/centos-home挂载到了/home下。可以事先安装mmsge wget https://files.cnblogs.com/files/JesseLucky/coreseek-4.1-beta.tar.gz tar zxf coreseek-4.1-beta.tar.gz cd /home/coreseek-4.1-beta/mmseg-3.2.14 ./bootstrap ./configure --prefix/home/mmseg make make install然后安装Sphinx cd /home/coreseek-4.1-beta/csft-4.1 ./buildconf.sh发现报错不着急 automake: warnings are treated as errors /usr/share/automake-1.13/am/library.am: warning: libstemmer.a: linking libraries using a non-POSIX /usr/share/automake-1.13/am/library.am: archiver requires AM_PROG_AR in configure.ac libstemmer_c/Makefile.am:2: while processing library libstemmer.a /usr/share/automake-1.13/am/library.am: warning: libsphinx.a: linking libraries using a non-POSIX /usr/share/automake-1.13/am/library.am: archiver requires AM_PROG_AR in configure.ac src/Makefile.am:14: while processing library libsphinx.avim ./configure.ac 62 再AC_PROG_RANLIB的下方添加AM_PROG_AR再次执行./buildconf.sh 发现有如下报错 configure.ac:231: the top level configure.ac:62: error: required file config/ar-lib not found configure.ac:62: automake --add-missing can install ar-libvim buildconf.sh 5 把--foreign改成--add-missing再次执行./buildconf.sh 直到configure文件出现。./configure --prefix/home/coreseek --with-mysql/usr/local/mysql --with-mmseg/home/mmseg --with-mmseg-includes/home/mmseg/include/mmseg/ --with-mmseg-libs/home/mmseg/lib/make make install 若发现报错有ExprEval字样 vim /home/coreseek-4.1-beta/csft-4.1/src/sphinxexpr.cpp 将所有的 T val ExprEval ( this-m_pArg, tMatch ); 替换为 T val this-ExprEval ( this-m_pArg, tMatch ); 再次执行make发现还报错 /home/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22292对‘libiconv_open’未定义的引用 /home/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22310对‘libiconv’未定义的引用 /home/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22316对‘libiconv_close’未定义的引用vim /home/coreseek-4.1-beta/csft-4.1/src/Makefile 249 把 LIBS -ldl -lm -lz -lexpat -L/usr/local/lib -lrt -lpthread 改成 LIBS -ldl -lm -lz -lexpat -liconv -L/usr/local/lib -lrt -lpthreadmake make install 成功安装装好之后配置它汉字是提示记得运行环境要删掉 cd /home/coreseek/etc 记得这个名字一定得是csft.conf换成其它的也行但是到后期增量索引合并时会报错 cp sphinx-min.conf.dist csft.conf 配置内容就是有汉字的地方 vim csft.conf source articles 起个名叫articles {type mysqlsql_host 数据库IPsql_user 数据库用户名sql_pass 数据库密码sql_db 数据库sql_port 3306 端口sql_query_pre select names utf8mb4 加上这行sql_query select id,content from articles Sphinx建索引的数据源sql_attr_uint group_id 这行用不上可以去掉sql_attr_timestamp date_added 这行用不上可以去掉sql_query_info_pre select names utf8mb4 加上这行sql_query_info select id,content from articles where id$id 用Sphinx做什么SQL的查询逻辑#sql_query_post update sphinx_index_record set max_id (select max(id) from articles) where table_name articles; 这个是增量索引要用的东西这里暂时用不上后文会讲。 }index articles 起个名叫articles {source articles 名字与source一致path /home/coreseek/var/data/articles 索引路径docinfo extern 这行用不上可以去掉charset_dictpath /home/mmseg/etc 新增这行表示分词读取词典文件的位置charset_type zh_cn.utf-8 设置字符集编码 }保存并退出注意数据源要与索引是一对一的。然后留意两个文件 /home/coreseek/bin/indexer 是用来创建索引的 /home/coreseek/bin/searchd 是启动服务端进程的。开启服务 开启服务 /home/coreseek/bin/searchd -c /home/coreseek/etc/csft.confps aux | grep search root 83205 0.0 0.0 47732 1048 ? S 02:01 0:00 /home/coreseek/bin/searchd -c /home/coreseek/etc/csft.conf root 83206 0.5 0.0 116968 3728 ? Sl 02:01 0:00 /home/coreseek/bin/searchd -c /home/coreseek/etc/csft.conf9312端口netstat -nlp | grep 9312 tcp 0 0 0.0.0.0:9312 0.0.0.0:* LISTEN 83206/searchd配置文件参数说明 https://sphinxsearch.com/docs/current.html#conf-mem-limit indexer段----------------------------- mem_limit这是创建索引时所需内存默认32M可以适当调大格式如下 mem_limit 256M mem_limit 262144K # same, but in KB mem_limit 268435456 # same, but in byteshttps://sphinxsearch.com/docs/current.html#conf-query-log 在searchd段----------------------------- listen 9312 表示sphinx默认端口 listen9306 mysql41表示Sphinx服务器将监听在 9306 端口并使用 MySQL 4.1 协议与客户端进行通信。可以注释掉以下两行使其不记录日志 #log /home/coreseek/var/log/searchd.log #query_log /home/coreseek/var/log/query.logread_timeout 网络客户端请求读取超时以秒为单位。可选默认为5秒。Searchd将强制关闭未能在此超时时间内发送查询的客户端连接。 max_children 并发搜索数量设置为0表示不限制。 max_matches 参数用于设置每次搜索操作返回的最大匹配项数seamless_rotate 在 Sphinx 服务器配置文件中seamless_rotate 参数用于控制索引旋转操作的行为确保索引更新过程中的查询不会被中断。“旋转”rotate是指在更新索引数据时将旧的索引文件替换为新生成的索引文件的过程。 当设置为 1 或 true默认值seamless_rotate 使得 Sphinx 能够在后台加载新的索引数据同时继续使用旧的索引数据处理查询请求直到新的索引完全加载并准备好被使用。这个过程完成后新的索引将无缝地接管替换旧的索引而不会干扰或中断正在进行的搜索操作。 如果将 seamless_rotate 设置为 0 或 false则在索引旋转时Sphinx 会暂停处理新的查询请求直到新的索引文件完全加载并准备就绪。这可能会导致短暂的服务中断因此除非有特殊需求一般建议保持 seamless_rotate 的默认设置即启用无缝旋转以确保索引更新过程中搜索服务的连续性和稳定性。preopen_indexes 是否在启动时强制预打开所有索引。可选默认为1unlink_old 用于控制在索引旋转时是否删除旧的索引文件。当设置为 1 或 true 时默认值旧的索引文件将被删除保持默认值就好。客户端配置 PHP SphinxClient手册http://docs.php.net/manual/tw/class.sphinxclient.php cp /home/coreseek-4.1-beta/testpack/api/*.php /test vim /test/sphinxapi.php 把sphinxapi里面的SphinxClient()方法改为__construct()防止稍高版本的PHP产生类名和方法名一致的通知。可以先测试只要返回数组就Server和Client都能正常工作。 vim /test/test_coreseek.php 把里面的网络搜索改成晴空万里把SPH_MATCH_ANY改成SPH_MATCH_PHRASE。 sphinx文件有个limit选项这个默认是20所以最多显示出20个可以去修改它。 /usr/local/php5.6/bin/php /test/test_coreseek.php这是二次改过的test_coreseek.php对于新手有很友好的提示。 require ( ./sphinxapi.php ); $search new SphinxClient (); //连接Sphinx服务器 $search-SetServer ( 127.0.0.1, 9312); //设置超时秒数 $search-SetConnectTimeout ( 3 ); //查询出来的数据库ID存放位置 $search-SetArrayResult ( true ); //配置搜索模式 $search-SetMatchMode (SPH_MATCH_PHRASE); //分页参数1偏移量从0开始参数2限制条目 $search-SetLimits(0, 200); //执行查询参数1关键字 $res $search-Query (黑色衣服, 索引名称);if($res false) {echo 查询失败;return; }//获取主键 $primary_keys []; if(! empty($res[matches])) {foreach($res[matches] as $v) {$primary_keys[] $v[id];} }//获取总数 $all_count $res[total_found];//获取耗时 $time $res[time];$ids implode(,, $primary_keys); echo RESULT 主键id: $ids 查询总数$all_count 耗时: $time RESULT;匹配模式 官方文档https://sphinxsearch.com/docs/current.html#matching-modes调用方法(new SphinxClient())-SetMatchMode (SPH_MATCH_ALL);分词举例假设关键字“白色衣服”词语被分成了“白色”和“衣服”。 匹配模式一句话概括会被匹配不会被匹配SPH_MATCH_ALL同时包含这些分词时会被匹配白色的绳子晾着他的衣服他的衣服SPH_MATCH_ANY匹配任意一个分词就行白色的纸白云SPH_MATCH_PHRASE相当于like ‘%关键词%’白色衣服白色的衣服SPH_MATCH_EXTENDED支持Sphinx的表达式下方有详解白色的衣服SPH_MATCH_EXTENDED2SPH_MATCH_EXTENDED的别名下方有详解白色的衣服SPH_MATCH_BOOLEAN支持布尔方式搜索下方有详解白色的衣服SPH_MATCH_FULLSCAN强制使用全扫描模式下方有详解白色的衣服 详解SPH_MATCH_FULLSCAN SPH_MATCH_FULLSCAN强制使用全扫描模式。注意任何查询项都将被忽略这样过滤器、过滤器范围和分组仍然会被应用但不会进行文本匹配。 当满足以下条件时将自动激活SPH_MATCH_FULLSCAN模式来代替指定的匹配模式: 查询字符串为空(即:它的长度是0)。 Docinfo存储设置为extern。 在完全扫描模式下所有索引的文档都被认为是匹配的。这样的查询仍然会应用过滤器、排序和分组但不会执行任何全文搜索。这对于统一全文和非全文搜索代码或卸载SQL服务器很有用(在某些情况下Sphinx扫描比类似的MySQL查询执行得更好)。 详解SPH_MATCH_BOOLEAN https://sphinxsearch.com/docs/current.html#boolean-syntax kw1|kw2|kw3或的关系满足任意1项即可。kw1 -kw2或者kw1 !kw2表示!kw2 详解SPH_MATCH_EXTENDED https://sphinxsearch.com/docs/current.html#extended-syntax kw1|kw2|kw3或的关系满足任意1项即可kw1 -kw2或者kw1 !kw2表示!kw2。mysql字段名 字段全部内容匹配某个字段的内容。* 字段全部内容匹配所有字段的内容。^kw表示以关键字开头。kw$表示以什么关键字结尾。 实测索引创建性能 创建索引 /home/coreseek/bin/indexer -c /home/coreseek/etc/csft.conf articles这里的article就是source段的名称。服务器配置CentOS7.6 16核4G内存 固态硬盘。Sphinx索引创建速度36262.76/sec每条语句大小约10~150个汉字。Sphinx索引文件创建速度4441931 bytes/sec。一共耗时1亿条数据创建索引花了50.5分钟索引文件约10个G。原文如下 Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)] Copyright (c) 2007-2011, Beijing Choice Software Technologies Inc (http://www.coreseek.com)using config file /home/coreseek/etc/csft.conf... indexing index articles... WARNING: Attribute count is 0: switching to none docinfo collected 109450000 docs, 13406.8 MB WARNING: sort_hits: merge_block_size28 kb too low, increasing mem_limit may improve performance sorted 3133.8 Mhits, 100.0% done total 109450000 docs, 13406849231 bytes total 3018.247 sec, 4441931 bytes/sec, 36262.76 docs/sec total 322950 reads, 202.304 sec, 27.9 kb/call avg, 0.6 msec/call avg total 20920 writes, 25.975 sec, 997.1 kb/call avg, 1.2 msec/call avg实测查询性能 开启searchd服务/home/coreseek/bin/searchd -c /home/coreseek/etc/csft.conf 服务器配置CentOS7.6 16核4G内存 实测亿级数据下搜索晴空万里只花费0.011秒上文提到MySQL则需要242秒性能差了22000倍。或许是受或分词器影响Sphinx查询出来1898条MySQL查询数据为1931条 多次测试在109450000条数据中从不同角度测试Sphinx SPH_MATCH_PHRASE匹配模式相当于mysql where field like ‘%关键字%’ 类型搜索关键字Sphinx搜索耗时秒MySQL搜索耗时秒Sphinx搜索数量MySQL搜索数量数字1230.005305.14231218143中文单字虹0.013223.18467802103272英文单字母A0.031339.5761364281017983单中文标点。4.471125.1066708801267096182单英文标点.0251.17106697242可打印特殊字符☺0355.46900中文词语易分词黑色衣服0.066346.44210391062中文词语不易分词夏威夷0.011127.05436363664中文词语热门你好0.022126.979102826137717中文词语冷门旖旎0.010345.49344524528英文单词good0.010137.5625531036中文短语他不禁一脸茫然1.742218.27200英文短语I am very happy0.015355.23510长文本陈大人不急着回答他先从柜台下面又抽出了一份文案翻了好一阵之后才回答道“瞧果然如此如今广州这边官职该放得都放出去了只剩下消防营山字营的一个哨官之职。不出所料的话督抚大人准会委你这个职务。0.131129.20411 实测Sphinx并发性能 压测方式 ab -c 1 -n 10~1000 192.168.3.180/test_coreseek.php 中文定值关键字为华盛顿英文定值关键字为XYZ30位随机中文或英文字符由代码生成。 生成任意正整数个中文字符 function generateRandomChinese($length) {$result ;for ($i 0; $i $length; $i) {$result . mb_convert_encoding(# . mt_rand(0x3e00, 0x9fa5) . ;, UTF-8, HTML-ENTITIES);}return $result; }生成任意正整数个英文字符 function generateRandomEnglish($length) {$result ;for ($i 0; $i $length; $i) {$result . chr(mt_rand(97, 122)); // 小写字母ASCII码范围: 97~122大写字母65~90}return $result; }类型请求量 搜索次数耗时秒固定中文多次搜索100.256固定中文多次搜索1001.435固定中文多次搜索100011.604随机30位中文字符多次搜索100.517随机30位中文字符多次搜索1002.305随机30位中文字符多次搜索100017.197固定英文多次搜索100.327固定英文多次搜索1000.747固定英文多次搜索10008.510随机30位英文字符多次搜索100.077随机30位英文字符多次搜索1000.766随机30位英文字符多次搜索10009.428 创建增量索引前的数据查询问题 对于update很多数据sphinx不会自动更新索引所以可以选择在公司业务空闲时间重建索引。 对于insert可以使用增量索引创建一个表用于存储已经新增sphinx索引记录的最大值。 CREATE TABLE sphinx_index_record (id int unsigned NOT NULL AUTO_INCREMENT COMMENT Sphinx索引创建进度表id,table_name varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 表名,max_id int unsigned NOT NULL COMMENT 最大id,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;并insert一条数据 INSERT INTO test.sphinx_index_record (id, table_name, max_id) VALUES (1, articles, 109450000);对于Sphinx当需要新增增量索引时读取这个表中的数据获取到这个值使其创建索引的起始点为max_id字段的值。对于max_id字段的业务作用可以封装一个方法可以让这个值载入Redisredis有值就读取无值就查询然后载入Redis。对于业务代码例如100万行数据创建了Sphinx索引然后又新增了1000条这1000条数据没有sphinx索引可以在业务代码中使用mysql union或者其它方式让这1000条数据做查询。 伪代码如下 $max_id 从缓存中获取获取的索引位置假设是100万; $kw 搜索关键字;$id_s sphinx($kw);sql1是根据sphinx的 $sql1 select * from table where id in $id_s; sql2是对未添加sphinx索引的剩余表数据的操作 $sql2 select * from table where id $max_id like %$kw%;使用PHP的方式或者mysql union的方式都行让两个数据集合并查询出的结果通过接口返回。 这样兼顾新增的1000条数据也能被查询的到。创建增量索引 这块需要承接上文。 第一步自动维护索引最大值这一步可以在首次创建索引时就可以完成。 vim /home/coreseek/etc/csft.conf 在source段最后添加一行代码这是让sphinx创建增量索引后自动维护sphinx_index_record表数据。 source articles { ... ... sql_query_post update sphinx_index_record set max_id (select max(id) from articles) where table_name articles; }第二步新增增量索引配置 把source段复制出来然后粘贴到下方注意括号范围不要嵌套例如 source articles_add {type mysqlsql_host 数据库IPsql_user 数据库用户名sql_pass 数据库密码sql_db 数据库sql_port 3306 端口sql_query_pre select names utf8mb4 加上这行-------------------------------修改这里start-------------------------------------------sql_query select id,content from articles where id (select max_id from sphinx_index_record where table_name articles) Sphinx创建增量索引的数据源-------------------------------修改这里end-------------------------------------------sql_attr_uint group_id 这行用不上可以去掉sql_attr_timestamp date_added 这行用不上可以去掉sql_query_info_pre select names utf8mb4 加上这行sql_query_info select id,content from articles where id$id 用Sphinx做什么SQL的查询逻辑 }这里记得index段也新增一个配置。永远记住source段与index段一对一的。index articles_add 这里需要改 {source articles_add 这里需要改path /home/coreseek/var/data/articles_add 这里需要改#docinfo externcharset_dictpath /home/mmseg/etccharset_type zh_cn.utf-8 }执行创建索引功能。 /home/coreseek/bin/indexer -c /home/coreseek/etc/csft.conf articles_add 合并索引语法indexer --merge 主索引名 增量索引名 /home/coreseek/bin/indexer --merge articles articles_add 如果不关闭searchd可以添加 --rotate参数强制合并索引。需要留意一下如果主索引10个G增量索引0.1G则需要20.2G的临时空间去进行和合并。多配置 这个也好办直接在csft.conf配置文件内source段和index段复制粘贴根据上文的两段文章该创建索引的创建索引该重启的重启。 不需要引入多个文件就和MySQL一样只需要一个/etc/my.cnf就行了相加配置接着往下续就行了。 新创建索引后不会生效需要关闭searchd进程后重新启动。 集成到框架思路 方案1 使用composer安装新的包PHP8.0及以上不会报错。 记得要搜索sphinx client或sphinxapi不要搜素sphinx这会把SphinxQL的解决方案也给搜出来。 用这个包就行composer require nilportugues/sphinx-search 用法与自带的完全一致而且遇到PHP8不报错。 $sphinx new \NilPortugues\Sphinx\SphinxClient(); $sphinx-setServer(192.168.3.180,9312); $sphinx-SetConnectTimeout (3); $sphinx-SetArrayResult (true); $sphinx-SetMatchMode (SPH_MATCH_PHRASE); $sphinx-SetLimits(0, 200); $res $sphinx-query (黑色衣服, articles); print_r($res);方案2 使用原生自带的包PHP8.0及以上会报错。 sphinxapi.php放置到app/Libs/Others目录下并添加自己的命名空间App\Libs\Others\SphinxApi。 app/Libs/helper.php存放了自定义封装的方法并使用composer dump-autoload配置跟随框架自动加载。 封装成一个方法方便调用并放入helper.php下 function sphinx() {$sphinx new App\Libs\Others\SphinxApi();$sphinx-SetServer (config(services.sphinx.ip), config(services.sphinx.port));$sphinx-SetConnectTimeout (config(services.sphinx.timeout);$sphinx-SetArrayResult (true);return $sphinx; }//控制器随处调用 $sphinx sphinx(); $sphinx-SetMatchMode (SPH_MATCH_PHRASE); $sphinx-SetLimits(0, 200); $res $sphinx-Query (黑色衣服, 索引名称); ...Sphinx的不足之处 查询结果遗漏受分词器影响实测查询结果比实际的存储要少一些这会造成信息的损失。客户端代码陈旧自带的的PHP Sphinx Api的代码使用PHP8.0及以上会报错。不会自动添加增量索引MySQL新增的数据Sphinx并不会自动创建索引。不会自动改变索引MySQL update的数据Sphinx不会自动改变索引。不支持Canal监听bin log实时同步Sphinx索引。 鸣谢 感谢3位博主在C编译安装报错时提供的解决方案 夜里小郎君的博文https://blog.csdn.net/b876143268/article/details/53771310 mingaixin的博文https://www.cnblogs.com/mingaixin/p/5013356.html 晚晚的博文https://www.cnblogs.com/caochengli/articles/3028630.html
http://www.sczhlp.com/news/174925/

相关文章:

  • 起名网站建设推荐几个响应式网站做参考
  • 广州海珠区赤岗 新港网站建设公司郑州网页设计制作
  • dedecms做图库网站怎么做国外游戏下载网站
  • 多肉建设网站前的市场分析建设局的全称
  • 主体负责人和网站负责人网站开发的相关技能有哪些
  • 用divid做网站代码湖南常德通报1例复阳病例
  • 网站评估 源码做网站维护的人叫啥
  • 企业网站色彩搭配wordpress系统速度慢
  • 自学做视频网站郑州优化网站 优帮云
  • 长沙网站seo技术厂家wordpress antivirus
  • 用新媒体给产业园招商 - 智慧园区
  • 30年后摘得诺奖,一个叛逆“东亚小孩”的胜利
  • 网站设计与制作的过程做网站怎么挣钱最快
  • php网站上做微信支付功能行业网站开发
  • 乐清网站开发WordPress英文换行
  • 导航网站优化东莞智通人才最新招聘网
  • 商城网站建设论文拓者室内设计
  • 深圳外贸建站网络推广价格建设vip网站相关视频
  • 如何做x响应式网站肇庆东莞网站建设
  • 广州公司网站建设推广wordpress ldap集成
  • 成都建设局网站青岛市住房和城乡建设局网站
  • 青海省网站建设公司网站建设者属于广告经营者吗
  • 宁波外贸网站制作个人手机网站大全
  • asp模板网站修改东莞核酸检测收费
  • 国外网站如何做seo一二三四视频社区在线一中文
  • 上海网站制作与推广没经验的人开什么店好
  • 苏州企业网站设计wordpress主页广告
  • 博客网站开发项目网络的关键路径
  • 免费网站模板psd邢台建设规划网站
  • 长春网站制作最专业wordpress前端定制