这有效;
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与Match匹配,最重要的是,使用(括号)将事物有效地链接在一起以优先考虑正确的混合物;
(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
);
然后这实际上返回重复的结果。
答案 0 :(得分:1)
似乎你只需要
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="col-md-4 col-sm-4 col-xs-4">
<select class="form-control">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
<option>Option 4</option>
</select>
</div>
<div class="col-md-4 col-sm-4 col-xs-4">
<input type="text" name="" class="form-control">
</div>
<div class="col-md-4 col-sm-4 col-xs-4">
<button class="btn btn-default"><span class="glyphicon glyphicon-plus"></span></button>
</div>
</div>
答案 1 :(得分:0)
@Arilia提供的代码完美无缺。主要提示自己(以及其他人如果你遇到类似问题偶然发现)当构建复杂查询时,请记住在计算MySQL全文搜索生成的分数时,这不会适用于结果中的每一行设置,有些将显示0,因为它们不会被查询的这一部分触发,它们将由查询的其他更简单的部分触发。小学生错误。
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') > 2
)
AND
Col3 = 'something3';