MySql Match()在布尔模式下反对

时间:2017-10-13 02:06:32

标签: mysql full-text-search

我无法弄清楚为什么这不起作用。

这是我的查询有效:

SELECT
  id,
  title
FROM
  `pages`
WHERE MATCH (title) AGAINST ('Visual*' IN BOOLEAN MODE)
ORDER BY title
LIMIT 10;

这是我的页面表:

id    title    
===============================
1     About Us
2     Visual Data

但是这个没有返回任何记录:

SELECT
  id,
  title
FROM
  `pages`
WHERE MATCH (title) AGAINST ('About*' IN BOOLEAN MODE)
ORDER BY title
LIMIT 10;

这里是SQL小提琴:http://sqlfiddle.com/#!9/d264f2/2

1 个答案:

答案 0 :(得分:1)

使用全文搜索时有几个重要概念 - documentation有更多详细信息。

一个关键概念是定义一个单词。这在这里并不重要,但是MySQL允许你指定分隔符。

另一个关键概念是只有一些单词被编入索引。单词未被索引的两个常见原因是:

  • 它们太短(或者我想太久了,但这很不寻常)。
  • 他们在停用词列表中。

停用词列表中的单词通常是"填充"单词 - 例如"","否则" ,. 。 。你可能会猜到"关于"。

您可以覆盖停用词列表。您需要提供另一个停用词列表(或根本不提供)。然后重建索引。