如何在多列上创建FULLTEXT索引?

问题描述 投票:0回答:5

我正在

tbl_query

上运行以下查询
select * from tbl_query q where match(q.query_desc,q.query_desc_details) against ('test1' WITH QUERY EXPANSION);

出现错误

16:46:22    select * from tbl_query q where match(q.query_desc,q.query_desc_details) against ('test1' WITH QUERY EXPANSION) LIMIT 0, 1000   Error Code: 1191. Can't find FULLTEXT index matching the column list    0.078 sec  

我的桌子是这样的

 CREATE TABLE `tbl_query` (
  `query_id` int(11) NOT NULL AUTO_INCREMENT,
  `query_desc` text NOT NULL,
  `query_desc_details` text,
  PRIMARY KEY (`query_id`),
  KEY `QUERY_DESC` (`query_desc`(333)) USING BTREE,
  KEY `QUERY_DESC_DETAILS` (`query_desc_details`(333)) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

在数据库全文单词边界就像

ft_max_word_len=    84
ft_min_word_len=    4  

我正在搜索两列。
所以我的问题是如何为表创建全文索引?

mysql database
5个回答
64
投票

全文包含您像这样创建的

2

ALTER TABLE tbl_query
ADD FULLTEXT INDEX `FullText` 
(`query_desc` ASC, `query_desc_details` ASC);

27
投票
ALTER TABLE `TableName`
    ADD FULLTEXT INDEX `IndexName` (`ColumnName`);

16
投票

这将创建索引。这应该有效。

ALTER TABLE `TableName` ADD FULLTEXT index_name(column1, column2);

2
投票

添加索引

ALTER TABLE 表名添加全文索引名(列 1,列 2);

获取搜索结果

SELECT * FROM 表名 WHERE MATCH(列 1, 列 2)
AGAINST('搜索字符串'在自然语言模式下);

删除索引

更改表表名
删除索引index_name;

0
投票

这些都是

ALTER
,但您也可以使用
CREATE INDEX
语法来添加它:

CREATE FULLTEXT INDEX search_idx ON myDatabase.books (bookTitle, bookAuthor, bookText);
© www.soinside.com 2019 - 2024. All rights reserved.