首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于词名的Postgresql向量搜索

基于词名的Postgresql向量搜索
EN

Stack Overflow用户
提问于 2014-10-28 01:50:02
回答 1查看 113关注 0票数 1

让我们首先设置上下文,

  • 我们的数据库是postgres 8.4.20
  • 我的表包含一个非常大的全名列表。
  • 这些名称只能在一列中。
  • 我们使用向量搜索这个表。
  • 我们需要快速搜索。

现在是问题:我可以非常快地搜索整个表,而且它似乎正在按预期工作。当您正在搜索的主题有两个姓氏时,就会产生这样的问题:

  • 拉蒙弗洛雷斯弗洛雷斯

  • 埃内斯托·莫拉莱斯 在这种情况下,它将在数据库中记录"Ramón Flores“或"Ernesto Morales”。

我想要的是能够只带来包含"Ramón Flores Flores“或"Ernesto Morales Morales”的记录。我的想法是创建另一列,包含每条记录的统计信息,并添加一些WHERE子句,仅在每个单词只出现一次时才进行选择。

(预先谢谢:)

编辑进度注释1:,我尝试使用WHERE子句> 0.1给出这些结果,然后使用WHERE子句>0.1。虽然正在帮助我缩小这些结果,但这还不是一个完全的解决办法。我会继续研究:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-15 16:43:12

虽然ts_rank提供了某种替代方案来解决这个问题.仅仅使用postgres似乎不可能实现我正在努力实现的目标。

当我们面对一个包含两个或三个相同单词的字符串时,ts_rank的行为有些奇怪(一旦您将它们“向量化”;如果这甚至是一个单词),因此,在一天结束时,您需要比较这些字符串,并在找到这两个或三个相同的单词时使用不同的ts_rank规则。

我的主程序是用PHP编写的,所以我最终使用了该层来比较我的话并使用正确的规则。

我还是希望有人能帮我找到更好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26599686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档