大型术语列表的高效文本搜索:Python vs PostgreSQL vs Elasticsearch

问题描述 投票:0回答:1

我有一个包含长度从 1 到 10 个单词不等的术语的列表,大约有 500,000 个条目。我的目标是在长文本(从 PDF 转换而来,通常长 1.5 到 2 页)中搜索这些术语。我不仅需要执行精确匹配的搜索,还需要使用模糊(例如,术语“Lionel Messi”应与文本中的“Lionel Messi”匹配)和附近选项(例如,术语“Lionel Messi”应与“Lionel Messi”匹配) J. 梅西在文中)。

我的目标是近乎实时(1-2 秒)解决这个问题。我尝试过使用 trie 数据结构和并行化,但特别是当模糊方面发挥作用时,列表的大尺寸和 PDF 长度导致处理时间很长(大约 30 秒)。

我该如何解决这个问题?

  1. 我可以使用 Python 库(使用并行化、trie 结构等)即时处理它吗?
  2. PostgreSQL 中有支持此类搜索的功能吗?
  3. 我应该使用像 Elasticsearch 这样的框架吗?”
python postgresql elasticsearch full-text-search fuzzy-search
1个回答
0
投票

postgres 提供原生全文搜索功能,例如 https://www.postgresql.org/docs/current/textsearch.htmlhttps://www.postgresql.org/docs/current/pgtrgm.html

还有像最近这样的扩展 https://docs.paradedb.com/blog/introducing_bm25https://github.com/pgvector/pgvector 适用于 LLM 生成的向量(f.e)。

© www.soinside.com 2019 - 2024. All rights reserved.