在搜索我的数据库时,我希望真正相关的结果(我的布尔搜索返回的结果)排名,但同时我不希望完全省略相关性较低的(如)结果。
目前我的查询看起来像这样。
(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子句具有不同的列数。我理解这是因为“得分”被添加为查询第一部分的列 这个问题有解决方法吗?
答案 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。