我对文本分析和数据库专家有疑问。我想将一个数据库表中的人名与另一个表中的文本文匹配。例如:
SELECT text FROM article
INNER JOIN person
ON article.text LIKE "%" || person.name || "%"
这种方法在我尝试的任何数据库上都很慢,比如Netezza,Redshift和传统的RDS,比如MySQL或SQL服务器。
哪种系统最适合这样的查询?
答案 0 :(得分:0)
它很慢,因为您没有索引,并且每个查询都会在多个全表扫描中结束。如果您愿意,可以使用RDMBS,您唯一需要创建的是索引表
此表如下所示:
word varchar(n), document_id int
这个想法是为文档中的每个单词创建一个条目,其中document_id指向源表中的行
然后在单词列中创建一个db索引,最终得到查询的O(n log n)时间复杂度
您也可以尝试ibm db2文本搜索或其他供应商的类似工具,这些工具基本上都是这样做的