如果我用MySQL 全文搜索来寻找术语“ fiesta ",而我正在搜索的领域如下:"cars ford engines ”。
MySQL会给我一个结果吗?我不希望它只找到“福特嘉年华”,如果这些词在我正在搜索的领域中相邻,例如“cars ford fiesta engines”。
如果MySQL在默认情况下不会给出结果,我是否可以将其配置为这样做(如果这些单词出现在我正在搜索的文本中的任何地方),或者还有其他方法来实现这一点?
谢谢
发布于 2015-04-22 07:31:03
使用REGEXP
SELECT * FROM `table` where `field` REGEXP 'ford.*fiesta' = 1它将返回那些记录,这些记录的field字段包含包含单词ford和fiesta的字符串,在它们之间有任何字符串。REGEXP在匹配时返回1,如果不匹配则返回0。
发布于 2015-04-22 07:26:10
使用like,然后添加通配符参数。
正因如此
SELECT * FROM table WHERE field LIKE '%ford fiesta%'发布于 2015-04-22 08:19:48
也许完全不相关,但当我开始创建一个更复杂的搜索引擎时,我开始使用一个特殊的数据库。
看看elasticSearch,一旦您启动并运行了它,那么指定像您这样的需求是非常简单的。
特别是来自ElasticSearch的ElasticSearch将满足您的需要。您甚至可以指定要在哪些字段上运行查询。
正如我说过的,一旦你想从简单的搜索转到高级搜索,MYSQL就不是做这个工作的合适人选。
干杯
https://stackoverflow.com/questions/29790517
复制相似问题