大家好,我的中文分词用的standard,查询方式用的match_phrase,现在有两个关键字,比如“黄某某”和“杀人”我要保证这两个关键字的先后顺序怎么办呢?

Elasticsearch | 作者 huang | 发布于2017年10月15日 | 阅读数:1117

就是说,我既要用match_phrase来确保“黄某某”这三个字是连在一起,而且“杀人”是连在一起的,同时也想来保证这两组词的先后顺序,比如说我要找到“黄某某”在“杀人”之前这样的
已邀请:

rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk

赞同来自: laoyang360 kennywu76

有两点要注意:
1. "黄某某" 、 "杀人" 各自要求连在一起是一个分词的问题,这个是分词器的解决范畴,即保证可以产生 黄某某 和 杀人的 term。建议你用专门的中文分词,比如ik。
2. 黄某某 杀人 要求先后顺序是一个词序匹配的问题,这个是 match_phrase 的解决范畴

pan7da

赞同来自:

@rockybean  你好,接着huang的问题,我有如下查询,是否能做到保序,即:”中华“词一定在”国“前面?
curl -X GET "http://127.0.0.1:24100/nebula/ ... ot%3B -H 'Content-Type: application/json' -d '
{
    "query": {
        "bool": {
            "must": [
                {
                    "match_phrase": {
                        "description": "中华"
                    }
                },
                {
                    "match_phrase": {
                        "description": "国"
                    }
                }
            ]
        }
    }
}'
按照上面的语句,以下两条都可以查出来,但是我只想得到第一条
1. 中华人民共和国
2. 国是中华

要回复问题请先登录注册