我们正在尝试使用一个分析器,它支持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'})
暂无答案!
目前还没有任何答案,快来回答吧!