我已经创建了以下索引
PUT /proximity_example_1
{
"mappings":{
"properties":{
"doc_id": {
"type": "text"
},
"test_name":{
"type": "text"
}
}
}
}
然后为文档编制索引
POST proximity_example_2/_doc
{
"doc_id": "id1",
"test_name": "test proximity here"
}
然后以邻近度0进行查询,如下所示
GET proximity_example_2/_search
{
"query": {
"match_phrase": {
"test_name": {
"query": "proximity test",
"slop": 0.0
}
}
}
}
但是我没有得到任何结果,然后我用接近度1进行了搜索,这次我也没有得到任何文件。但当我在接近度大于1的情况下进行搜索时,我得到了结果。
GET proximity_example_2/_search
{
"query": {
"match_phrase": {
"test_name": {
"query": "proximity test",
"slop": 2.0
}
}
}
}
GET proximity_example_2/_search
{
"query": {
"match_phrase": {
"test_name": {
"query": "proximity test",
"slop": 3.0
}
}
}
}
那么,这是否意味着在ElasticSearch中,当我们以接近度*1或0搜索词的顺序进行搜索时,这很重要吗?
谢谢.。
1条答案
按热度按时间bwntbbo31#
值为0的SLOP与普通短语搜索一样好(非常严格,在Elasticearch中应该有完全相同顺序的搜索词),随着斜率的增加,这种限制会降低,您会有更多的搜索结果,但注意,增加到较高的数字会违背短语搜索的目的,您会得到无关的结果。
您可以阅读this和this详细的博客文章,其中解释了它的内部工作原理