我有一个Mysql表,有几列,其中一列包含search_text VARCHAR
。该表记录数据的频率很高,包含数百万条记录。
我想搜索一组单词/文本,应该匹配所有行中的每个或所有单词。我们可以传递一个日期范围来限制范围。
我在Mysql上试过FTS,但是React很慢。
表格结构:
CREATE TABLE IF NOT EXISTS `textsearch` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`duration` bigint(20) DEFAULT NULL,
`timer` datetime DEFAULT NULL,
`search_text` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `title` (`search_text`)
)
要搜索文本:
["单词1"、"单词2"、"单词3"、"组合单词"]
查询:
SELECT * FROM textsearch t WHERE MATCH (t.search_text) AGAINST ('word1' IN BOOLEAN MODE) and t.timer BETWEEN 'date1' AND 'date2';
这将是一个单词/文本数组,需要搜索/匹配这些单词/文本,对于所有匹配项,我们必须对textsearch
表中的duration
列求和。
1条答案
按热度按时间6ju8rftf1#
您可以使用
HAVING MATCH
AGAINST
+
代表与-
代表非[no运算符]隐含OR
“some words”,是查找包含确切短语“some words”的行
Demo here
Docs