用Leventhstein进行全文搜索

时间:2018-10-28 09:48:37

标签: postgresql elasticsearch search full-text-search levenshtein-distance

假设您有一个表格movies,其中包含以下VARCHARTEXT字段:

  • 标题
  • 说明
  • 作者

我想用postgresql编写查询以匹配这三个字段中任何一个的文本。但是,理想情况下,我想以非常模糊的方式进行搜索。例如:

  • 我希望Tron匹配一个Tron标题
  • 我希望tron匹配一个tron标题
  • 我希望The Tron匹配一个Tron标题
  • 我希望Steven Lisberger匹配一位Lisberger, Steven作者
  • 我希望commuter haker与包含computer hacker的描述相匹配。
  • 我会撒谎Tron Sci-Fi来将Tron标题与Sci-Fi movie描述相匹配。

因此,从本质上讲,我希望至少具有以下某些功能:

  • 不区分大小写
  • 忽略某些单词的可能性
  • 忽略单词顺序
  • 使用一些单词距离算法,例如Levenshtein
  • 搜索时加入多个字段

我知道它与postgresql full-text search类似,但使用了一些ispell集成而不是Levenshtein算法。但是它使用的语义向量取决于文本的语言环境,在我看来,这在某种程度上是一种反特征。我的电影记录可以用任何语言书写,我无法区分它们。此外,为了添加缺少的字典,我无权访问postgresql服务器配置。

因此,我想我希望进行类似全文搜索的操作,但要使用一种由模式词的独特的Levensthein等级与文本中任何单词匹配的即时Leversthein排序组成的即时矢量。 / p>

我知道这将是非常低效的,因此肯定不存在。但是我想得到一些意见,以便考虑一些替代或更好的方法。

此外,我也不想使用Elasticsearch。我可以妥协功能以简化应用程序堆栈。但是,出于好奇,我真的很想知道是否有可能这样做(以前从未使用过)。

0 个答案:

没有答案