postgres数据库中文本字段的合适索引是什么?

时间:2010-11-15 05:17:50

标签: database postgresql indexing

我有一个数据库,存储来自各种SCR的Code Chekins的详细信息。此数据库中的一个表存储每个签入的Commit Comments。我正在尝试开发一个搜索功能,在Postgres posix表示法的帮助下搜索此表,尝试匹配此注释字段上的正则表达式并返回所有匹配的。

我已经有了这个工作,但这里的主要问题是这个搜索的性能。对于一个相当大的数据库,它几乎需要15-20分钟才能完成搜索,并且由于它的Web前端等待结果,这对于中型数据库来说是完全不可接受的时间。 我认为在这个文本字段上创建一个索引可能会有所帮助,但我无法创建一个btree索引,因为某些行的数据对于potgres来说太大了,无法在其上创建索引。

还有其他解决办法吗?是否还有其他可以创建的索引不应该依赖于语言?

4 个答案:

答案 0 :(得分:2)

检查full text search functions,正则表达式不能使用索引。

答案 1 :(得分:1)

答案 2 :(得分:0)

是的,全文搜索是你的答案。 PostgreSQL具有非常强大和快速的FTS功能。

答案 3 :(得分:0)

其他人提到全文搜索。如果需要正则表达式而不是全文搜索,则无法以通用方式对其进行索引。只要表达式锚定在字符串的开头(在开头使用^),通常可以使用索引,但对于通用正则表达式,无法使用索引进行搜索。