1

我有一个名为“fact”的表,标题列应该是全文索引。

首先,我添加一个全文索引:

ALTER TABLE fact ADD FULLTEXT title_fts (title)

所以,我插入行:

INSERT INTO fact (id, title) VALUES ('1', 'red blue yellow ok green grey ten first wise form');

然后我执行搜索:

select * from fact f where contains (f.title, '"red" or "blue"')

当我执行以下查询或任何其他带有“包含”语句的查询时,我得到 emtpy 结果集:

我必须使用这种说法,而不是反对或喜欢。有谁碰巧知道为什么会这样?谢谢你。

4

1 回答 1

4

使用全文搜索时有两个非常重要的概念。第一个是最小工作长度(见这里)。默认情况下,该值为 4,这意味着比这更短的单词将被忽略。再见“红”、“好”、“十”等短字。

第二个重要概念是停用词列表(参见此处)。这也将摆脱“ok”和“first”。

您的文本没有“蓝色”并且“红色”被忽略,因此您的查询不会返回任何内容。

在确定了真正需要包含的单词后,您将需要重新构建索引。

于 2015-07-01T14:43:21.157 回答