Elasticsearch源码分析十--调用Lucene查询分析器Analyzer

  • 概述
  • 源码分析

概述

Elasticsearch的查询语句中的一些域需要进一步调用Analyzer分析器进行分析,比如fuzzy_like_this查询、fuzzy_like_this_filed查询、more_like_this查询、more_like_this_field查询、multi_match查询等。在这些查询中,查询field包含多个值,如下例中需要搜索包含“crime publishment”的document。我们不能直接用“crime publishment”去索引中查找,需要对其运用Analyzer分析器进行分析。

{
    "fuzzy_like_this" : 
    {
        "fields": "title",
        "like_text": "crime punishment",
        "analyzer": "simple"   #定义分析器,用于分析like_text字段
    }
}

源码分析

'''(1)Elasticsearch:在解析查询语句时,获取分析器'''
public class FuzzyLikeThisQueryParser implements QueryParser {
   

    public static final String NAME = "flt";

    @Override
    public Query parse(QueryParseContext parseContext) throws IOException, QueryParsingException {
        XContentParser parser = parseContext.parser();

        int maxNumTerms = 25;
        float boost = 1.0f;
        List<String> fields = null;
        String likeText = null;
        float minSimilarity = 0.5f;
        int prefixLength = 0;
        boolean ignoreTF = false;
        '''分析器'''
        Analyzer analyzer = null;
        boolean failOnUnsupportedField = true;

        XContentParser.Token token;
        String currentFieldName = null;
        while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
            if (token == XContentParser.Token.FIELD_NAME) {
                currentFieldName = parser.currentName();
            } else if (token.isValue()) {
                if ("like_text".equals(c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值