0

我有一个非常大的知识库(Yago2),其中包含 XMl 标签形式的列,例如'<Albert_Einstein>'。性能在我的用例中非常重要,所以我创建了一个这样的 gin 索引:

 create index col_idx on yagofacts using gin(to_tsvector('english', column_name));

现在我试图用

select * from yagofacts where to_tsvector('english', column_name) @@ to_tsquery('Albert_Einstein'); 

但是,它不会返回任何结果,因为它无法在 XML 标记中进行搜索。我看到了一个可以解决上一个问题的方法:

select to_tsvector( 'simple', regexp_replace(column_name, E'[^A-Za-z0-9]', ' ', 'g')) @@ to_tsquery('simple','Albert_Einstein');

问题是它没有很好的性能,因为它没有使用我创建的 gin 索引。如何快速查询?

4

1 回答 1

1

我设法通过在以下位置创建一个杜松子酒索引来解决这个问题:

 create index no_xml_idx on yagofacts using gin(to_tsvector('simple', regexp_replace(column_name, E'[^A-Za-z0-9]', ' ', 'g')));
于 2015-05-14T12:28:08.967 回答