Php 使用类似mysql语句的最佳匹配(自然匹配)

Php 使用类似mysql语句的最佳匹配(自然匹配),php,mysql,Php,Mysql,我想搜索表格并使用like not FULL TEXT SERCH从表格中获得最佳匹配。有什么需要做的吗?这就是您要寻找的吗 SELECT username FROM users WHERE username LIKE '%value%'; 如果你要求全文搜索,搜索结果按相关性排序,那么是的,有解决方案。。但这不是小事。以下是更多的“企业”级解决方案: Solr- Solr是ApacheLucene项目中流行的、快速的开源企业搜索平台。它的主要功能包括强大的全文搜索、点击突出显示、分面搜索、动

我想搜索表格并使用like not FULL TEXT SERCH从表格中获得最佳匹配。有什么需要做的吗?

这就是您要寻找的吗

SELECT username FROM users WHERE username LIKE '%value%';

如果你要求全文搜索,搜索结果按相关性排序,那么是的,有解决方案。。但这不是小事。以下是更多的“企业”级解决方案:

Solr-

Solr是ApacheLucene项目中流行的、快速的开源企业搜索平台。它的主要功能包括强大的全文搜索、点击突出显示、分面搜索、动态集群、数据库集成和丰富的文档(例如Word、PDF处理)。Solr具有高度的可扩展性,提供分布式搜索和索引复制,并支持世界上许多最大互联网站点的搜索和导航功能

斯芬克斯

一般来说,它是一个独立的搜索引擎,旨在为其他应用程序提供快速、高效和相关的全文搜索功能。Sphinx是专门为与SQL数据库和脚本语言很好地集成而设计的。目前内置的数据源支持通过直接连接MySQL或PostgreSQL获取数据,或者使用XML管道机制(Sphinx认可的基于XML的特殊格式的管道到索引器)获取数据

在不了解更多系统和限制的情况下,不可能帮助缩小正确的解决方案

分步骤进行:

a。首先查找完全匹配的SELECT*FROM business,其中name='value'

如果失败,则:

b。将搜索字符串拆分为单词,对每个单词运行查询将每个单词的结果添加到一个数组中,其中键是行id,值是相关性,对于找到的每个单词,将相关性增加1,然后您可以简单地对数组排序,即最匹配的单词=最高相关性


b非常不完善,实际上您应该使用全文mysql内置全文或sphinx/lucene等,如上所述

我不是要求全文搜索,您要求的是最佳匹配,这意味着相关性搜索。我需要这种东西从业务中选择*,如“Al%”按DESC name、lengthname排序;这不是工作,这个怎么样?从业务中选择*名称,如“AI%”按名称描述订购,lengthname描述现在必须处理100000行,未来需要处理1000多万行。是否可以使用相同的fild长度和alabetial顺序进行排序?您无法在1000万行上有效地使用LIKE,为什么不能使用全文?