1. 测试文本为
a. 中华人民共和国
b. 共和国人民中华
c. 中国人是华人,是共和国
d. 中华大地,共有经济体和国家
2. 要求:用户输入 中华*共和国,得到 a
3. 诉求:我有如下语句,可以找到a,但是也匹配到了b,b是期望匹配到的。
curl -X GET "http://127.0.0.1:24100/nebula/... " -H 'Content-Type: application/json' -d '
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"description": "中华"
}
},
{
"match_phrase": {
"description": "共和国"
}
}
]
}
}
}'
麻烦帮忙看下有没有什么方法可以做到只匹配 a,谢谢。
a. 中华人民共和国
b. 共和国人民中华
c. 中国人是华人,是共和国
d. 中华大地,共有经济体和国家
2. 要求:用户输入 中华*共和国,得到 a
3. 诉求:我有如下语句,可以找到a,但是也匹配到了b,b是期望匹配到的。
curl -X GET "http://127.0.0.1:24100/nebula/... " -H 'Content-Type: application/json' -d '
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"description": "中华"
}
},
{
"match_phrase": {
"description": "共和国"
}
}
]
}
}
}'
麻烦帮忙看下有没有什么方法可以做到只匹配 a,谢谢。
4 个回复
pan7da
赞同来自:
God_lockin
赞同来自:
pan7da
赞同来自:
1. 不好意思,手抖,打少了一个字,应该是”b是不期望匹配到的“。
在上面的测试集中,我只希望匹配得到a。
另:”中华“ 和 ”共和国“ 中间的字符数不确定,且“中华”必须是一整个词,”共和国“必须是一整个词。
2. 你说的这个方法,不能保序,即:”中华“在前,”共和国“在后;slop设置为2,限制了"中华"和”共和国“之间的字符个数(当然可以通过增大slop匹配中间更多的字符,也会匹配到c,d)。
总体意思是:1. 该方法不能保证“中华”是一整个词,”共和国“是一整个词;2. 这两个词不保序。
麻烦再帮忙看看还有其他方法不?谢谢。
God_lockin
赞同来自:
中间不确定个数的字可以直接取个size/length填在slop里面就好了