1

我有一个 postgresql 数据库,其中包含大约 5000 万个作为地址的字符串条目。字符串的示例是

NIAID, Opportunist Infect Res Branch, Treatment Res Programs, Div Aids, Bethesda, MD USA
PRINCETON UNIV,DEPT PSYCHOL,PRINCETON,NJ 08544

等等

现在我必须检查一个地址是否与大约 30,000 个正则表达式列表中的任何一个匹配。我还需要知道匹配哪个正则表达式。正则表达式的例子是

%umass mem med ctr worcester%worcester%ma%
%darnnouth% 

这当然是 postgres 的“LIKE”格式。由于正则表达式匹配不能利用索引(反正不是很多,我已经索引了字段 varchar_pattern_ops),所以这个操作的总运行时间大约是 30000x50 百万。

如果存在任何可以帮助我加快流程的 python 库,我也可以使用 python 进行正则表达式匹配。

谢谢您的帮助!

4

1 回答 1

1

有什么问题:

CREATE TABLE regex (
     regex text primary key
);

SELECT * FROM my_table
  JOIN regex ON mytextfield like regex;
于 2013-05-15T01:18:08.300 回答