python - 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”而不是“&”查询我的索引时,它不会抛出任何结果。
解决方案
现在工作正常,我已将该分析器添加到我要分析的目标字段中,之前我试图将该分析器绑定到所有字段,但没有成功。
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'
]
希望这会对某人有所帮助
推荐阅读
- c# - C# 的正态累积分布
- mongodb - MongoDB 对象中所有值的总和,其中我们不知道对象中的键
- python - 我如何运行浮士德工人并管理他们
- java - 使用 Apache Beam 标记 Google Cloud Dataflow 作业
- python - 如何设置默认用户组odoo 11
- python - 如何将多个json文件合并为一个文件
- c# - WPF - 用户控件 DP 未绑定到主窗口
- javascript - 计算所需的高度以使缩小的 div 到达底部视口
- arrays - 如何使用带有俄语字母的数组?
- azure - 如果存在分支标记,Azure Devops 会排除作业