【问题标题】:mysql fulltext index search in boolean mode union with a like based search布尔模式下的mysql全文索引搜索与基于相似的搜索联合
【发布时间】:2013-02-23 04:03:17
【问题描述】:

在搜索我的数据库时,我希望将真正相关的结果(由我的布尔搜索返回的结果)排名,但同时我不希望完全省略一些不太相关(喜欢)的结果。

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

(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 子句具有不同的列数。我知道这是因为在查询的第一部分中将“分数”作为列添加。
这个问题有解决办法吗?

【问题讨论】:

    标签: mysql full-text-search


    【解决方案1】:

    只需使用列别名在第二个查询中添加一个假列分数。您不需要使用该值,但会使联合工作。 例如:

    (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 替换为您希望分配的任何默认分数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 2018-07-06
      • 2014-03-30
      • 2011-10-30
      • 2011-03-04
      相关资源
      最近更新 更多