【问题标题】:MySQL Fulltext search ignores numbersMySQL全文搜索忽略数字
【发布时间】:2013-03-24 12:31:32
【问题描述】:

嗯,我有一个 mysql 全文搜索,问题是这个查询似乎不时忽略数字,所以数据库包含视频游戏的名称,如

帝国时代
帝国时代2
帝国时代3

现在,当使用 Age of Empires 2 之类的字符串执行全文搜索时,有时会返回 Age of Empires 或 Age of Empires 3 作为第一个匹配项。

基本上,如何确保搜索字符串中的数字在查询/或稍后评估返回的匹配项时具有高优先级?

【问题讨论】:

  • 你确定“2”是不是太短而数不清?
  • 你的意思是全文搜索不计入?
  • @EugenRieck 可能是对的。我认为全文搜索的默认设置每个项目至少有 3 个字符。您应该检查 mysql 设置。
  • 刚刚检查了设置,你说的最少是3个字母,无法更改...没有其他方法可以让数字计数吗?
  • 就 MySQL 而言,数字没什么特别的。因此,如果您不使用单个字母索引单词,则不会索引单词“2”或“3”。您可能需要考虑另一列“世代”或“版本”并做一些准备......这也有助于“帝国时代 II”和“魔兽争霸 IV”

标签: php mysql full-text-search evaluation


【解决方案1】:

你应该使用这个语法:Select * From table1 Where column1 Like 'Age Of Empires 2';

就我而言:

mysql> Select * From table1;
 +----------------------+
 |column1               |
 +----------------------+
 |Age Of Empires        |
 |Age Of Empires 2      |
 |Age Of Empires 3      |
 +----------------------+

 mysql> Select * From table1 Where column1 Like 'Age Of Empires 2';
 +----------------------+
 |column1               |
 +----------------------+
 |Age Of Empires 2      |
 +----------------------+

【讨论】:

  • 这是错误的 :( 如果您知道确切的值,请使用 =,而不是 LIKE。它根本没有回答问题。
  • 正如@jkavalik 所说,这根本不能回答问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
相关资源
最近更新 更多