Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Wagtail:对ES 使用自定义分析器;查询(同义词)_Python 3.x_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Wagtail_Wagtail Search - Fatal编程技术网 elasticsearch,wagtail,wagtail-search,Python 3.x,elasticsearch,Wagtail,Wagtail Search" /> elasticsearch,wagtail,wagtail-search,Python 3.x,elasticsearch,Wagtail,Wagtail Search" />

Python 3.x Wagtail:对ES 使用自定义分析器;查询(同义词)

Python 3.x Wagtail:对ES 使用自定义分析器;查询(同义词),python-3.x,elasticsearch,wagtail,wagtail-search,Python 3.x,elasticsearch,Wagtail,Wagtail Search,我们正在尝试使用一个分析器,它支持Wagtail中内置的ES7支持的同义词搜索。 到目前为止,我们能够定义分析器并更新索引,但在执行查询时设置分析器没有任何成功 以下是索引的设置: 'INDEX_SETTINGS': { 'settings': { 'index': { "analysis": { "filter": {

我们正在尝试使用一个分析器,它支持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"
    }
  }
}
我们已经看到,搜索函数不允许将自定义分析器作为参数传递给它

class SearchableQuerySetMixin:
    def search(self, query, fields=None,
               operator=None, order_by_relevance=True, partial_match=True, backend='default'):
有没有一种方法可以做到这一点,而不必对ES实现中涉及的所有部分进行子类化? 在索引时在字段级别定义它的选项似乎非常麻烦(“额外”:)

理想情况下,我们能够做到以下几点:

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