阅读查询
在Posgres中,全文索引允许对文档进行预处理,并保存索引以便稍后进行快速搜索。预处理包括:
将文档解析成标记。
将标记转换为词元。
存储针对搜索进行优化的预处理文档。
Postgres使用tsvector
类型进行全文搜索
tsvector
类型与下面的text
类型有以下区别:
消除大小写。大写和小写字母是相同的。
删除停用词(and, or, not, she, him和数百个其他词)-因为这些词不相关于文本搜索。
替换同义词并采用词干(将
elephant
->eleph
)。在全文目录中,它没有单词elephant
,而是单词elep
。可以(也应该)使用GIST和GIN进行索引
使用权重和
ts_rank
进行自定义排名
相较于Postgres全文搜索,Elasticsearch(搜索引擎)有什么优势?