全文搜索(Postgres)与弹性搜索
Full text search(Postgres) Vs Elastic search
阅读Query
在 Posgres 中,全文索引允许对文档进行预处理并保存索引以供以后快速搜索。预处理包括:
正在将文档解析为标记。
将标记转换为词素。
存储为搜索而优化的预处理文档。
tsvector
类型在 Postgres 中用于全文搜索
tsvector
类型与 text
类型在以下方面不同:
消除大小写。 Upper/lower大小写相同
删除停用词(and、or、not、she、him 和其他数百个词)- 因为这些词与文本搜索无关
替换同义词并采用词干 (elephant
-> eleph
)。在全文目录中,没有elephant
这个词,而是elep
.
这个词
可以(并且应该)使用 GIST 和 GIN 进行索引
自定义权重排名 & ts_rank
Elastic search(搜索引擎)与 Postgres 中的全文搜索相比有何优势?
全文搜索和 elasticsearch 都建立在相同的基础技术上倒排索引因此性能将大致相同。
FTS 将更易于部署。
ES自带lucene,
如果你想要带 FTS 的 Lucene,那将需要额外的努力。
阅读Query
在 Posgres 中,全文索引允许对文档进行预处理并保存索引以供以后快速搜索。预处理包括:
正在将文档解析为标记。
将标记转换为词素。
存储为搜索而优化的预处理文档。
tsvector
类型在 Postgres 中用于全文搜索
tsvector
类型与 text
类型在以下方面不同:
消除大小写。 Upper/lower大小写相同
删除停用词(and、or、not、she、him 和其他数百个词)- 因为这些词与文本搜索无关
替换同义词并采用词干 (
elephant
->eleph
)。在全文目录中,没有elephant
这个词,而是elep
. 这个词
可以(并且应该)使用 GIST 和 GIN 进行索引
自定义权重排名 &
ts_rank
Elastic search(搜索引擎)与 Postgres 中的全文搜索相比有何优势?
全文搜索和 elasticsearch 都建立在相同的基础技术上倒排索引因此性能将大致相同。
FTS 将更易于部署。
ES自带lucene,
如果你想要带 FTS 的 Lucene,那将需要额外的努力。