我搞不懂下面的代码。我已经找了好几个小时了,但似乎什么也找不到。
我要做的就是找到所有符合条件的单词。在这个例子中,我试图找到包含单词“鞋”或“鞋”等的所有条目(注意星号),也包含“皮革”或皮具等,但也不包括单词trainer,boot,high heels,jacket,trainers,腰带或高跟鞋
SELECT * FROM wp_posts WHERE post_type = 'product' AND MATCH (post_content,post_title,post_name) AGAINST ('"*shoe*" "*leather*" -"trainer" -"boot" -"high heels" -"jacket" -"trainers" -"belt" -"pumps" ' IN BOOLEAN MODE)
我似乎不能正确理解逻辑,我得到的结果似乎只包含"Shoe(s)“而不包含"leather(s)”或"Leather(s)但不包含"shoe(s)“我也尝试了以下方法,但没有成功:
SELECT * FROM wp_posts WHERE post_type = 'product' AND MATCH (post_content,post_title,post_name) AGAINST ('+"*shoe*" +"*leather*" -"trainer" -"boot" -"high heels" -"jacket" -"trainers" -"belt" -"pumps" ' IN BOOLEAN MODE)
我已经学习了如何使用"+“和"-",但我不知道如何在上面的场景中使用它们。
如果有人能帮我指明正确的方向,我将不胜感激。
发布于 2014-09-02 03:16:12
你的代码:
SELECT * FROM wp_posts WHERE post_type = 'product‘AND (post_content,post_title,post_name)与(’“*鞋*”“*皮革*”-“运动鞋”-“长靴”-“高跟鞋”-“夹克”-“运动鞋”-“腰带”-“高跟鞋”‘在布尔模式下)
我相信您正在寻找的(使用布尔模式)类似于:
SELECT * FROM wp_posts WHERE post_type = 'product‘AND (post_content,post_title,post_name) AND (’*shoe* *leather* -trainer -boot -"high heels“-jacket -trainers -belt -pumps‘IN BOOLEAN MODE)
我已经删除了无关的引号。星号(*)在引号之间不会像预期的那样工作,因为引号中的东西是按字面意思理解的。请参阅MySQL FullText Boolean了解本节内容:
“用双引号(”)字符括起来的短语仅与键入时按字面意思包含该短语的行匹配。全文引擎将短语拆分成单词,并在全文索引中搜索单词。非单词字符不需要完全匹配:短语搜索只要求匹配包含与短语完全相同的单词,并且顺序相同。例如,“测试短语”与“测试,短语”匹配。如果短语不包含索引中的单词,则结果为空。例如,如果所有单词要么是停用词,要么比索引单词的最小长度短,则结果为空。
在你的代码中-“*鞋*”和-“*皮革*”将不会像预期的那样工作。删除引号应该可以解决这个问题。
https://stackoverflow.com/questions/25609915
复制相似问题