我有一个非常大的知识库(Yago2),其列具有XMl标签的形式,例如'<Albert_Einstein>'
。性能在我的用例中非常重要,所以我创建了一个像这样的杜松子酒索引:
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');
问题是它没有良好的性能,因为它没有使用我创建的杜松子酒索引。我怎样才能快速查询?
答案 0 :(得分:1)
我设法通过在:
上创建一个杜松子酒索引来解决这个问题 create index no_xml_idx on yagofacts using gin(to_tsvector('simple', regexp_replace(column_name, E'[^A-Za-z0-9]', ' ', 'g')));