我有一堆关键字存储在 MySQL 中。为简单起见,假设数据库几乎没有关键字。
可以说它们存储了一个像这样的表:
CREATE TABLE `keywords` (
`keyword` varchar(255) NOT NULL,
UNIQUE KEY `keyword` (`keyword`),
FULLTEXT KEY `keyword_ftx` (`keyword`)
)
现在有几个关键字:
'C'、'C++'、'C#'、'Zend 框架'、'Visual Basic'
现在我想从文本中提取这些关键字。如:
这里有一些编程语言和框架,例如 C++、Visual Basic 和 Zend Optimizer 做一些事情。
应该使用示例关键字数据库条目从上面的文本中找到的明显关键字应该是:
C++、Visual Basic
到目前为止,我尝试了 2 种方法。
1- 将文本放入单词中并使用 SQL 查询来搜索匹配的行。
例如:WHERE 关键字 IN ('word1','word2'...)
这对于单个单词非常有效。但是,它找不到像 'Visual Basic' 等 2 个单词的东西。
2-使用全文索引并将文本作为自然语言提供给mysql。
例如:匹配关键字 AGAINST(“全文”)
这也很好用,但它返回诸如“Zend Framework”之类的东西(因为全文索引将 Zend 和 Framework 作为单独的单词,而它没有找到 C++(由于 MySQL 中的单词分隔符)。我不想我自己的整理仅用于此目的。
我发现的大多数 stackoverflow 文章都建议方法 1 或 2,但都不适合我。关于什么是提取多词关键字的最佳方法,同时还以简单的方式匹配具有标点符号的数据库中的其他文本(例如 C++ 等)的任何想法?
谢谢!