wagtail:使用自定义分析器 查询(同义词)

qncylg1j  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(0)|浏览(226)

我们正在尝试使用一个分析器,它支持wagtail中内置的es7支持的同义词搜索。到目前为止,我们能够定义分析器并更新索引,但在执行查询时设置分析器没有任何成功。
以下是索引的设置:

'INDEX_SETTINGS': {
      'settings': {
          'index': {
              "analysis": {
                  "filter": {
                      "my_synonym_filter": {
                          "type": "synonym",
                          "synonyms": [
                              "bowtie pasta, farfalle",
                          ]
                      }
                  },
                  "analyzer": {
                      "my_synonyms": {
                          "tokenizer": "standard",
                          "filter": [
                              "lowercase",
                              "my_synonym_filter"
                          ]
                      }
                  }
              },
          }
      },
  }

这是我们需要发送给es的搜索负载的一个例子:

{
  "query": {
    "query_string": {
      "query": "farfalle",
      "analyzer": "my_synonyms"
    }
  }
}

我们在wagtail/search/queryset.py中看到,search函数不允许将自定义分析器作为参数传递给它。

class SearchableQuerySetMixin:
    def search(self, query, fields=None,
               operator=None, order_by_relevance=True, partial_match=True, backend='default'):

有没有一种方法可以做到这一点,而不必对es中涉及的所有部分进行子类化 实施?在字段级别的索引时定义它的选项似乎非常麻烦(“es\u extra”:索引)。
理想情况下,我们可以这样做:

page_results = TranslatablePage.objects.live().filter(language_id=1).search(search_query, params={'analyzer': 'my_synonyms'})

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题