gpt4 book ai didi

php - 全文搜索-标签系统问题

转载 作者:行者123 更新时间:2023-11-29 06:20:33 26 4
gpt4 key购买 nike

我将标签存储在255 varchar区域中,就像这种类型;

",keyword1,keyword2,keyword3,key word 324,",keyword1234,

(关键字必须以逗号开头和结尾 (commakekeyword123comma))

-

我可以找到像这个sql查询这样的关键字3;

select * from table where keyword like = '%,keyword3,%'

CREATE TABLE IF NOT EXISTS `table1` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`tags` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `tags` (`tags`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2242 ;


INSERT INTO `table1` (`id`, `tags`) VALUES
(2222, ',keyword,'),
(2223, ',word is not big,'),
(2224, ',keyword3,'),
(2225, ',my keys,'),
(2226, ',hello,keyword3,thanks,'),
(2227, ',hello,thanks,keyword3,'),
(2228, ',keyword3,hello,thanks,'),
(2239, ',keyword3 but dont find,'),
(2240, ',dont find keyword3,'),
(2241, ',dont keyword3 find,');

(返回 2224,2226,2227,2228)

-

我必须更改此命令,例如全文搜索命令。

select * from table1 where match (tags) against (",keyword3," in boolean mode)

sql 命令查找 2239,2240,2241,但我不想查找 %keyword3% 或 keyword3

http://prntscr.com/137u9

仅查找 ,keyword3, ? 的想法

,keyword3,

谢谢

最佳答案

您不能单独使用全文搜索来实现此目的 - 它仅搜索单词。您可以使用以下几种不同的替代方案:

  • 您可以使用全文搜索来快速查找候选行,然后在后记中使用 LIKE,就像您已经在做的那样从全文搜索中过滤掉任何错误匹配项。

  • 您可以使用FIND_IN_SET .

  • 您可以标准化数据库 - 每行仅存储一个关键字。

    INSERT INTO `table1` (`id`, `tag`) VALUES
    (2222, 'keyword'),
    (2223, 'word is not big'),
    (2224, 'keyword3'),
    (2225, 'my keys'),
    (2226, 'hello'), -- // 2226 has three rows with one keyword in each.
    (2226, 'keyword3'),
    (2226, 'thanks'),
    (2227, 'hello'),
    -- etc...

其中我推荐 normalizing your database如果可能的话。

关于php - 全文搜索-标签系统问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3953790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com