通配符文本匹配(加入),哪种数据库系统最适合?

时间:2014-09-08 15:40:30

标签: sql text statistics

我对文本分析和数据库专家有疑问。我想将一个数据库表中的人名与另一个表中的文本文匹配。例如:

SELECT text FROM article 
INNER JOIN person
ON article.text LIKE "%" || person.name || "%"

这种方法在我尝试的任何数据库上都很慢,比如Netezza,Redshift和传统的RDS,比如MySQL或SQL服务器。

哪种系统最适合这样的查询?

1 个答案:

答案 0 :(得分:0)

它很慢,因为您没有索引,并且每个查询都会在多个全表扫描中结束。如果您愿意,可以使用RDMBS,您唯一需要创建的是索引表

此表如下所示:

word varchar(n), document_id int

这个想法是为文档中的每个单词创建一个条目,其中document_id指向源表中的行

然后在单词列中创建一个db索引,最终得到查询的O(n log n)时间复杂度

您也可以尝试ibm db2文本搜索或其他供应商的类似工具,这些工具基本上都是这样做的