mysql全文索引在布尔模式下搜索与基于类似的搜索联合

时间:2013-02-23 04:03:18

标签: mysql mysqli full-text-search

在搜索我的数据库时,我希望真正相关的结果(我的布尔搜索返回的结果)排名,但同时我不希望完全省略相关性较低的(如)结果。

目前我的查询看起来像这样。

(SELECT *, MATCH (col1,col2,col3,col4) AGAINST (query* in boolean mode) AS score
FROM table where match(col1,col2,col3,col4) against (query* in boolean mode)
order by score DESC) 
   UNION (SELECT * from table where col1 like query 
          or col2 like query or col2 like query or col4 like query)

这将返回一个错误,指出给定的两个select子句具有不同的列数。我理解这是因为“得分”被添加为查询第一部分的列 这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:1)

只需使用列别名为第二个查询添加假列分数。您不需要使用该值,但会使联合起作用。 e.g:

(SELECT *, MATCH (col1,col2,col3,col4) AGAINST (query* in boolean mode) AS score
FROM table where match(col1,col2,col3,col4) against (query* in boolean mode)
order by score DESC) 
UNION (SELECT *, 50 as score from table where col1 like query 
or col2 like query or col2 like query or col4 like query)

您可以使用您想要分配的任何默认分数替换50。