MySQL 全文搜索与查询匹配 AND OR Column1 = ABC

标签 mysql full-text-search

这有效;

SELECT MATCH('Col1', 'Col2') AGAINST('search query') AS Score, Col1, Col2, Col3 
FROM my_table 
WHERE 
Col1 = 'something-1' 
OR 
Col2 = 'something-2' 
OR 
MATCH('Col1', 'Col2') AGAINST ('search query') HAVING Score > 2;

这不是;

SELECT MATCH('Col1', 'Col2') AGAINST('search query') AS Score, Col1, Col2, Col3 
FROM my_table 
WHERE 
Col1 = 'something-1' 
OR 
Col2 = 'something-2' 
OR 
MATCH('Col1', 'Col2') AGAINST ('search query') HAVING Score > 2 
AND Col3 = 'something3';

我不确定这是否会带回我想要的确切结果,尽管这是主要问题:如何使用 AND 进行匹配,最重要的是,使用(括号)有效地将事物链接在一起以优先考虑正确的混合;

(X = 1 OR Y = 2 OR MATCH('Col1', 'Col2') AGAINST ('search query') HAVING Score > 2) AND Z = 3

从到目前为止我对每种组合的测试来看,我还没有设法让它有效地工作。我正在尝试扩展当前仅使用 AND 和 OR 的复杂查询,以包含具有一定质量的 MATCH AGAINST 信息。

一定有一种正确的方法可以做到这一点,但我没有做得正确。

更新 1 有趣的是,当我实现建议的查询并首先使用 AND 语句时,如下所示;

Col3 = 'something3' AND
(
    Col1 = 'something-1' 
    OR 
    Col2 = 'something-2' 
    OR 
    MATCH('Col1', 'Col2') AGAINST ('search query')  > 2 
);

那么这实际上会返回重复的结果。

最佳答案

看来你只需要

(
    Col1 = 'something-1' 
    OR 
    Col2 = 'something-2' 
    OR 
    MATCH('Col1', 'Col2') AGAINST ('search query')  > 2 
)
AND Col3 = 'something3';

关于MySQL 全文搜索与查询匹配 AND OR Column1 = ABC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770255/

相关文章:

sql-server - 返回列最大值百分比范围内的行

sql - 在 SQL Server 中使用全文搜索的延迟

MYSQL 如何搜索重音字符?

PHP/PCRE/正则表达式 : stripping search term appart

mysql - 将 .sql 文件批处理文件导入到 mariadb 失败

php - 如果另一张表中不存在记录,则插入到一张表中

php - Laravel 搜索;通过外部表过滤,然后再次使用本地表过滤结果

php - 匹配表单中的多个列

algorithm - 全文搜索和角色权限

c# - 如何在 MySQL 的 ASP.NET C# 应用程序中使用微软企业库