mysql - 在以下情况下,一列与多列的 FULLTEXT 索引?

标签 mysql indexing full-text-search full-text-indexing fulltext-index

我有这个表结构,我正在使用 MYSQL

post` (
  `post_id_pk` INT,
  `title` VARCHAR(100),
  `description` TEXT,
  `search_content` TEXT
)

我有一个搜索功能。如果用户在文本框中键入文本,并且如果该词包含在标题列或描述列的记录中,那么相应的帖子应该显示给用户。我使用此查询来获取结果

MATCH (search_content) AGAINST (@searchQuery IN NATURAL LANGUAGE MODE)

这工作正常。我想知道的是您看到“search_content”列了吗?我所做的是当用户提交一篇文章时,我将标题、描述数据和整个文本放入“search_content”列中。然后我只为全文索引了这一列,而不是结合标题和描述列来制作全文索引。那么性能方面最好的是什么?

1) 将两列合并到 FULLTEXT INDEX 中并使用它们

2) FULLTEXT 使用一列(该列应包括两列的所有数据)

最佳答案

这样做更简单高效:

CREATE TABLE post` (
  `post_id_pk` INT,
  `title` VARCHAR(100),
  `description` TEXT,
  -- Leave this out:  `search_content` TEXT
  FULLTEXT(title, description)  -- add this
);

然后

MATCH(title, description) AGAINST('...' ...)

如果您想针对只是 description(或只是标题)进行测试,您需要另一个FULLTEXT索引。

关于mysql - 在以下情况下,一列与多列的 FULLTEXT 索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453710/

相关文章:

MySQL - 两个表/外连接之间的匹配列

php - 在 Mysqli 中搜索查询(防止列中的单引号 - 不替换它)

php - 如何使用 PHP 使用两个键查找单个值?

elasticsearch - ElasticSearch.net附件搜索数组正在返回带有搜索结果的所有附件,如何仅检索匹配

python - 使用 Pyramid 框架搜索

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

mysql - 使用 Haxe 将 SDateTime 存储在 SQL 数据库中

c - 通过索引访问结构

string - 坚持 Apostolico-Crochemore 算法

php - 使用案例PDO全文搜索时如何按相关性排序