【问题标题】:MySQL Fulltext rank rows higher if keyword exists, but not part of the search terms如果关键字存在,但不是搜索词的一部分,MySQL 全文排名行更高
【发布时间】:2013-03-08 13:08:07
【问题描述】:

我正在尝试调整全文(布尔)查询。如果一个词包含在一行中,是否可以将行排名更高,但将该词用作搜索查询的一部分?

所以如果它包含关键字奶酪,但不主动搜索术语奶酪,我想排名更高?

目前我使用类似于searchterm >cheese* 的东西,但我相信它仍然会实际搜索术语cheese 吗?

这造成的问题是,如果没有结果,它仍然会显示基于cheese 的结果。我只希望它用作改进结果的方法,而不是用作搜索的东西。

black >cheese* 可能会返回根本不包含黑色但包含单词 cheese 的行。

【问题讨论】:

  • 你的意思是在ORDER BY子句中设置吗?
  • 您应该使用 % 作为通配符。
  • 我的意思是在against 部分进行匹配。 Ghigo,这不是全文。
  • 我已经更新了答案

标签: mysql full-text-search


【解决方案1】:

您可以尝试使用+test cheese。文档说明结果必须包含test,但如果它们还包含cheese,则它们的排名更高。

一个示例查询:

SELECT 
  MATCH (name) AGAINST ('+test cheese' IN BOOLEAN MODE) AS relevance, 
  t.* 
FROM 
  test AS t 
WHERE 
  MATCH (name) AGAINST ('+test' IN BOOLEAN MODE) 
ORDER BY relevance DESC;

您可以在http://sqlfiddle.com/#!2/6e5f8/4查看它

文档: http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

【讨论】:

  • 这比我以前好多了,我现在用它得到了一些很好的结果,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 2016-08-11
  • 2014-05-09
  • 2012-01-24
  • 2015-10-21
  • 2011-11-16
  • 1970-01-01
相关资源
最近更新 更多