Php 如果我需要查找两个彼此不接近的单词,MySQL如何进行全文搜索

Php 如果我需要查找两个彼此不接近的单词,MySQL如何进行全文搜索,php,mysql,full-text-search,Php,Mysql,Full Text Search,如果我使用MySQL查找术语“福特嘉年华”,我从如下字段搜索:“汽车福特引擎嘉年华” MySQL会给我一个结果吗?我不想让它只在我搜索的字段中相邻的单词中找到“福特嘉年华”,例如“福特嘉年华引擎汽车” 如果MySQL在默认情况下不会给我一个结果,我可以将其配置为这样做(如果单词出现在我搜索的文本中的任何地方,则匹配这些单词),或者是否有其他方法来实现这一点 谢谢使用like,然后添加通配符参数 因此 SELECT * FROM table WHERE field LIKE '%ford fies

如果我使用MySQL查找术语“福特嘉年华”,我从如下字段搜索:“汽车福特引擎嘉年华

MySQL会给我一个结果吗?我不想让它只在我搜索的字段中相邻的单词中找到“福特嘉年华”,例如“福特嘉年华引擎汽车

如果MySQL在默认情况下不会给我一个结果,我可以将其配置为这样做(如果单词出现在我搜索的文本中的任何地方,则匹配这些单词),或者是否有其他方法来实现这一点


谢谢

使用like,然后添加通配符参数

因此

SELECT * FROM table WHERE field LIKE '%ford fiesta%'

使用
REGEXP

SELECT * FROM `table` where `field` REGEXP 'ford.*fiesta' = 1

它将返回那些
字段
字段包含字符串的记录,这些字符串包含单词
ford
fiesta
,它们之间有任何字符串
REGEXP
匹配时返回1,不匹配时返回0。

可能完全不相关,但当我开始创建更复杂的搜索引擎时,我开始使用一个特殊的数据库

看看elasticSearch,一旦您启动并运行它,就可以非常简单地指定像您这样的需求

特别是ElasticSearch中的查询字符串将适合您的需要。您甚至可以指定要在哪些字段上运行查询

正如我所说,一旦你想从简单搜索过渡到高级搜索,MYSQL就不是合适的选择


干杯

试试这个,看看你能得到什么。按名称
全文serach
应返回与单词匹配的所有数据,而不管它们以何种方式出现在何处,无论您如何告诉mysql,以查看这两个单词是否已预设在一行中。查看手册了解更多详细信息,但对于该查询,我没有使用全文搜索?这只是regexp搜索?所以如果我想在“asd福特sds fefer vbh嘉年华”中搜索“福特嘉年华”。这个查询会找到它吗?无论如何,我认为REGEXP条件的构建方式必须是动态的,我的意思是,有时用户可能只输入1个单词进行搜索,有时2个,有时5个…是的,您可以测试它。当然,您可以使用PHP变量来提供这个regexp模式。好的,谢谢,如果real不能像我所希望的那样工作,我会试试这个。我希望关于性能的regexp不会慢一些。我听说过ElasticSearch,但对此一无所知。我找不到适合初学者的好教程,该教程将举例说明在php中使用ElasticSearch需要做什么:(