sphinx是一个高效的搜索引擎,分词搜索的速度比较快,索引建立存储在硬盘文件,不会干扰数据库,有自己内置的一套数据库.希望能帮助到大家。
php中使用sphinx搜索引擎
sphinx是一个高效的搜索引擎,分词搜索的速度比较快,索引建立存储在硬盘文件,不会干扰数据库,有自己内置的一套数据库
1.ubuntu安装sphinx
如果没有安装aptitude ,需要先安装 aptitude 因为因为用apt get install 安装下面命令会出现问题.<br>sudo apt-get install aptitude
<br>sudo aptitude install sphinx3 sphinx3-doc sphinxsearch sphinx-common -y
2.配置
<br> 1 2 |
<br> cd /etc/sphinxsearch/ cp sphinx.conf.sample sphinx.conf |
修改配置文件如下<br>
<br> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<br> source src1 { type = mysql sql_host = localhost sql_user = root sql_pass = magicmoma sql_db = coupon_20160901 sql_port = 3306 # optional, default is 3306 sql_query = SELECT couponid,title,description FROM app_coupon_api ##### 需要包含主键,分词索引字段 ######## } index test1 { source = src1 path = /var/lib/sphinxsearch/data/test1 #索引存放目录 docinfo = extern mlock = 0 morphology = none min_word_len = 1 charset_type = utf-8 min_prefix_len = 0 min_infix_len = 0 ngram_len = 1 html_strip = 0 } indexer { mem_limit = 2048M } <br> searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 client_timeout = 300 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid max_matches = 1000 seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 mva_updates_pool = 1M max_packet_size = 8M max_filters = 256 max_filter_values = 4096 max_batch_queries = 32 workers = threads # for RT to work } |
<br>
-
执行命令分词,会在/var/lib/sphinxsearch/data/test1 目录下生成一堆索引文件<br>
sudo indexer -c /etc/sphinxsearch/sphinx.conf test1
test1为上述配置文件的index名字
4.命令行测试搜索
sudo search -c /etc/sphinxsearch/sphinx.conf google
二.在php中使用
1.安装php sphinx的依赖库
1.安装 aptitude
apt-get install aptitude
<br>sudo aptitude install libsphinxclient-dev libsphinxclient-0.0.1 -y
2.安装php sphinx的扩展
安装 pecl<br>sudo apt-get install php-pear php5-dev
<br>在安装sphinx<br>sudo pecl install sphinx
3.在配置文件php.ini中添加sphinx的扩展,
我的php.ini文件为<br>sudo vim /etc/php5/fpm/php.ini
<br>获取自己的php.ini文件位置使用<br>php5-fpm -i|grep ini
添加:<br>extension=sphinx.so
<br>4.重启php5-fpm,查看php是否加载sphinx模块<br>sudo /etc/init.d/php5-fpm restart
<br>5.将search程序运行在后台<br>sudo searchd -c /etc/sphinxsearch/sphinx.conf
<br>默认监听配置文件中的端口:9312
6.在thinkphp中调用搜索<br>
<br> 1 2 3 4 5 6 7 8 9 10 11 12 13 |
<br> public function testSphinx() { $s = new \SphinxClient; $s->setServer("localhost", 9312); $s->SetArrayResult (true ); $s->setMatchMode(SPH_MATCH_ANY); $s->setMaxQueryTime(3); $result = $s->query("test"); $result = $result['matches']; $result = array_column($result,'id'); $list = M('CouponApi')->field('couponid,title,description')->where(array('couponid'=>array('in',$result)))->select(); dump($list); } |
搜索完毕,返回结果(默认返回20条,修改返回条数用添加 $s->SetLimits(0, 1000, 1000);
),搜索速度相当快,索引80w条数据的title和description两个字段耗时不到10s,该搜索引擎支持增量索引,多种模式的搜索,网上的资料也非常多
以上是php中如何使用sphinx搜索引擎的详细内容。更多信息请关注PHP中文网其他相关文章!

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。