小编Mic*_*pán的帖子

使用 nGram 分析器的 Django ElasticSearch DSL 部分匹配

django-elasticsearch-dsl 我对 ElasticSearch 主题还很陌生,我正在尝试使用 ElasticSearch 和库Github repo在我的 Django 应用程序中实现简单的电子商务搜索。

\n

我试图(极其简化)实现的目标是,考虑到这些 Django 模型实例:

\n
Red T-shirts\nBlue T-Shirts\nNice T-Shirts\n
Run Code Online (Sandbox Code Playgroud)\n

对于搜索词,T-Sh我将获得所有这三个结果:

\n
Red T-shirts\nBlue T-Shirts\nNice T-Shirts\n
Run Code Online (Sandbox Code Playgroud)\n

所以我在shop/models.py中有这个模型(同样非常简化)

\n
class Category(models.Model):\n   title = models.CharField(max_length=150, blank=False)\n   description = models.CharField(max_length=150, blank=False)\n   # In reality here I have more fields\n   def __str__(self):\n      return self.title\n
Run Code Online (Sandbox Code Playgroud)\n

与shop/documents.py

\n
from elasticsearch_dsl import analyzer, tokenizer\n\nautocomplete_analyzer = analyzer(\'autocomplete_analyzer\',\n            tokenizer=tokenizer(\'trigram\', \'nGram\', min_gram=1, max_gram=20),\n            filter=[\'lowercase\']\n        )from elasticsearch_dsl import analyzer, tokenizer\n\n@registry.register_document\nclass CategoryDocument(Document):\n\n    title: fields.TextField(analyzer=autocomplete_analyzer, search_analyzer=\'standard\') # …
Run Code Online (Sandbox Code Playgroud)

django elasticsearch elasticsearch-dsl

3
推荐指数
1
解决办法
1197
查看次数

标签 统计

django ×1

elasticsearch ×1

elasticsearch-dsl ×1