PostgreSQL的全文检索(一)
在全文检索没有出来之前,普通的文件检索都是采用的like,~,或者ilike来匹配文档字段中内容,这种检索方法对小数据量的文本检索是OK的,但数据量大了就不行了。 普通检索的劣势: 1.语言不能完全支持,哪怕是英文,比如检索friend时不能检索出friends或者friendly 2.检索出的结果排序功能不好 3.缺少索引支持,查询速度慢,特别是两头加了两个%时根本就不走索引 PostgreSQL在8.3.x版本后开始支持全文检索。执行步骤,主要分三步走: 1.将文档分词(parsing documents into tokens) 2.转换分词规则(converting tokens into lexemes),如去掉复数后缀s/es,以及加入stop词,使之不会在分词中出现,如常用的'的' 3.按一定顺序查询的优化方式存储(storing preprocessed documents optimized for searching) tsvector存储,使用tsquery查询 注:这里tokes是原始的拆分分词,可能包含常用的无意义的词,lexemes是加工过的有价值的分词 一、全文检索的环境和例子: postgres=# show default_text_search_config ; default_text_search_config ---------------