elasticsearch,Django,Postgresql,elasticsearch" /> elasticsearch,Django,Postgresql,elasticsearch" />

Django 如何对相似命名的项目进行分组? 问题

Django 如何对相似命名的项目进行分组? 问题,django,postgresql,elasticsearch,Django,Postgresql,elasticsearch,堆栈是Django 1.6、PostgreSQL 9.3和Elasticsearch 1.2。在PostgreSQL中,我将数据放在一个表中(为了简洁起见,删除了大多数列): 我希望在用户输入自动完成查询框时获得以下结果,因此需要快速: 温室游泳池游泳课(4项) 三一娱乐中心游泳课(5项) 三一娱乐中心空手道(3项) 如果用户键入s,我希望显示前两项 我怎么想 我认为利用Elasticsearch实现这一点是最有意义的,但鉴于上面提到的堆栈,我对其他解决方案持开放态度。ES完成建议器在这方面

堆栈是Django 1.6、PostgreSQL 9.3和Elasticsearch 1.2。在PostgreSQL中,我将数据放在一个表中(为了简洁起见,删除了大多数列):

我希望在用户输入自动完成查询框时获得以下结果,因此需要快速:

  • 温室游泳池游泳课(4项)
  • 三一娱乐中心游泳课(5项)
  • 三一娱乐中心空手道(3项)
如果用户键入
s
,我希望显示前两项

我怎么想 我认为利用Elasticsearch实现这一点是最有意义的,但鉴于上面提到的堆栈,我对其他解决方案持开放态度。ES完成建议器在这方面会非常出色(而且速度很快!),但我不确定如何按位置和类似位置对数据进行分组 PostgreSQL中的活动名称,以便对其进行索引。也许我错过了更好的方法

在这一点上,我有点卡住了

编辑1:
我认为这一点很接近(请参阅),但它依赖于
name
列的内容是否相同,而不仅仅是以相似的单词/字符开头。

我没有尝试过这一点,但您可能可以利用
pg_trgm
fuzzystrmatch
模块来实现这一点


看看这个问题的答案,它可能会对你有所帮助:

在发布原始问题之前,我确实查看了该链接,但它不太符合我的需要。我正在寻找一个解决方案,不需要“种子”与搜索字符串-如果有这样的解决方案。
Activity Name                              Location
=============                              ========
Swimming Lessons - Level 1                 Hothouse Pool
Swimming Lessons - Level 2                 Hothouse Pool
Swimming Lessons - Level 3                 Hothouse Pool
Swimming Lessons - Parent & Tot            Trinity Recreation Center
Swimming Lessons - Level 1                 Trinity Recreation Center
Swimming Lessons - Level 2                 Trinity Recreation Center
Swimming Lessons - Level 3                 Trinity Recreation Center
Swimming Lessons - Level 4                 Trinity Recreation Center
Swimming Lessons - Gold Certification      Hothouse Pool
Karate - White Belt                        Trinity Recreation Center
Karate - Yellow Belt                       Trinity Recreation Center
Karate - Black Belt                        Trinity Recreation Center