首页 > 解决方案 > char_filter 未正确设置

问题描述

我在弹性搜索 django 中设置自定义 char_filter 但我无法替换它

from elasticsearch_dsl import analyzer, tokenizer

remove_leading_and_symbol_char_filter = char_filter(
'remove_leading_and_symbol', 'pattern_replace',
pattern="&",
replacement="")

html_strip = analyzer('html_strip',
tokenizer="standard",
filter=["standard", "lowercase"],
char_filter=["html_strip", remove_leading_and_symbol_char_filter]
)

当我用“and”而不是“&”查询我的索引时,它不会抛出任何结果。

标签: pythondjangoelasticsearch

解决方案


现在工作正常,我已将该分析器添加到我要分析的目标字段中,之前我试图将该分析器绑定到所有字段,但没有成功。

from django_elasticsearch_dsl import DocType, Index, fields
from elasticsearch_dsl import analyzer, tokenizer, char_filter, token_filter
from django_app.models import ex_model

posts = Index('index_name')

remove_leading_and_symbol_char_filter = char_filter(
'remove_leading_and_symbol', 'mapping',
mappings=[ "&=> and "])

html_strip = analyzer('html_strip',
tokenizer="standard",
filter=["standard", "lowercase"],
char_filter=["html_strip", remove_leading_and_symbol_char_filter]
)

posts.analyzer(html_strip)
@posts.doc_type
class ExampleDocument(DocType):

    target_field = fields.TextField(
        analyzer=html_strip,
    )
    class Meta:
        model = ex_model
        field = [
        'field_1',
        'field_2'
        ]

希望这会对某人有所帮助


推荐阅读