我想在一列中搜索多个值,我希望我的查询返回确切的搜索短语(在本例中为标记)
这是我的查询
SELECT *
FROM `image_tags`
WHERE
MATCH (
tag
)
AGAINST (
'"yy yy"' '"xxxx"' IN BOOLEAN MODE
)
LIMIT 40
但我得到了许多不需要的结果,其中只有部分搜索过的标签
xxxx
aaxaa
bbxb
yy yy
我没关系,但至少我希望结果按搜索标签的相关性进行排序,我有这个,但它不起作用
SELECT * , MATCH (
tag
)
AGAINST (
'"yy yy"' '"xxxx"' IN BOOLEAN MODE
) as rel
FROM `image_tags`
WHERE
MATCH (
tag
)
AGAINST (
'"yy yy"' '"xxxx"' IN BOOLEAN MODE
)
order by rel desc
LIMIT 30
* btw我的搜索标签是波斯语而不是英语*
这是我的执行查询
SELECT *
FROM `image_tags`
WHERE
MATCH (
tag
)
AGAINST (
'"مردم تبریز" "ماسوله"'
)
LIMIT 40
这是结果(我在列表中添加了不需要的结果的星标)
id image_id tag
342145 123566 مردم تبریز
342413 123564 مردم تبریز
342143 123567 مردم تبریز
342142 123569 مردم تبریز
342137 123572 مردم تبریز
342414 123561 مردم تبریز
294921 106946 ترس از مردم = سلطه مردم بر من ******
80529 29913 ماسوله
452056 160815 ماسوله
449178 159809 ماسوله
75373 28164 ماسوله
75402 28164 ماسوله
13928 10031 ماسوله 2 ***********
13927 10030 ماسوله
358365 129393 کوه های ماسوله ***************
答案 0 :(得分:0)
正如String Literals所述:
彼此相邻的引号字符串连接成一个字符串。以下几行是等效的:
'a string' 'a' ' ' 'string'
因此,"مردم تبریز" "ماسوله"
相当于"مردم تبریزماسوله"
。你应该引用整个字符串文字,它本身包含引用的元素,例如: '"مردم تبریز" "ماسوله"'
。也就是说,改变:
MATCH (tag) AGAINST ("مردم تبریز" "ماسوله" IN BOOLEAN MODE)
对此:
MATCH (tag) AGAINST ('"مردم تبریز" "ماسوله"' IN BOOLEAN MODE)