# Needs help for name search (Higher score for positions)

**URL:** <https://discuss.elastic.co/t/needs-help-for-name-search-higher-score-for-positions/92870>\
**Category:** Elasticsearch\
**Created:** [July 12, 2017, 7:12pm UTC](https://discuss.elastic.co/t/needs-help-for-name-search-higher-score-for-positions/92870 "2017-07-12T19:12:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jesper\_Bendtsen](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Jesper\_Bendtsen](https://discuss.elastic.co/u/Jesper_Bendtsen)\
**Post date:** [July 12, 2017, 7:12pm UTC](https://discuss.elastic.co/t/needs-help-for-name-search-higher-score-for-positions/92870/1 "2017-07-12T19:12:23Z")

</div>

Hi

I'm trying to make an autocompletion, who gives higher score for typed word positions. Sorted by score and then name.

**My goal:**

typing "pet"

result:

```
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
anders petersen

```

typing "peter chr"

result:

```
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen

```

Above succeed and I was happy, but then something strange happening, when there are duplicates "peter christensen". Now the result looks like this:

```
peter christian grau
peter christian reumert krogsgaard
peter christensen
peter christensen
peter bruun christensen

```

And I want this:

```
peter christensen
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen

```

Please help?

Elasticsearch v. 5.5

**Settings:**

```
{
    "persons_index": {
        "settings": {
            "index": {
                "number_of_shards": "5",
                "provided_name": "persons_index",
                "creation_date": "1499881803116",
                "analysis": {
                    "filter": {
                        "ascii_folding_preserve_original": {
                            "type": "asciifolding",
                            "preserve_original": "true"
                        },
                        "names_synonym_filter": {
                            "type": "synonym",
                            "synonyms": [
                                "aage,åge",
                                "gaard,gård"
                            ]
                        }
                    },
                    "analyzer": {
                        "my_analyzer": {
                            "filter": [
                                "lowercase",
                                "trim",
                                "names_synonym_filter",
                                "ascii_folding_preserve_original"
                            ],
                            "type": "custom",
                            "tokenizer": "standard"
                        }
                    }
                },
                "number_of_replicas": "1",
                "uuid": "LxMHLha-R02i__S7gDWBtA",
                "version": {
                    "created": "5050099"
                }
            }
        }
    }
}

```

**Mapping:**

```
{
    "persons_index": {
        "mappings": {
            "persons_type": {
                "properties": {
                    "fieldDisplayFullName": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "my_analyzer"
                    },
                    "fieldSort": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "keyword",
                        "fielddata": true
                    }
                }
            }
        }
    }
}

```

**Example doc**

`{"fieldSort" : "peter christensen", "fieldDisplayFullName" : "Peter Christensen"}`

**Query:**

\_search?pretty=true&search\_type=dfs\_query\_then\_fetch

```
{
  "explain": false,
  "size" : 50,
  "sort": [
		"_score",
		{
			"fieldSort": {
				"order": "asc"
			}
		}
	],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
              	{"match" : { "fieldDisplayFullName" : "peter" }},
              	{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
	      {"match_phrase_prefix" : { "fieldSort" : {"query" : "peter chr","boost" : 10}}}
	    ]
    }
  }
}

```

**Result:**

```
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)

```

With duplicates "Peter Christensen (\_score: 14.909464)" 😕

```
Peter Christian Engelhardt (_score: 20.01772)
Peter Christian Grau (_score: 20.01772)
Peter Christian Reumert Krogsgaard (_score: 20.01772)
Peter Christian Vagnbo Jørgensen (_score: 20.01772)
Peter Christoffersen (_score: 20.01772)
Peter Christensen (_score: 14.909464)
Peter Christensen (_score: 14.909464)
Peter Bruun Christensen (_score: 1.04652)
Peter Dits Christensen (_score: 1.04652)
Peter Fjeldsø Christensen (_score: 1.04652)

```

**Diffrent query attemp with no success:** 😕

```
{
  "explain": false,
  "size" : 50,
  "sort": [
		"_score",
		{
			"fieldSort": {
				"order": "asc"
			}
		}
	],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
              	{"match" : { "fieldDisplayFullName" : "peter" }},
              	{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
       		{"span_first" : {
		      "match" : {
		          "span_term" : { "fieldDisplayFullName" : "peter" }
		      },
		      "end" : 1,
		      "boost" : 50.0
		    }},
		    {"span_first" : {
		      "match" : {
		          "span_multi":{
		            "match":{
		            	"wildcard" : { "fieldDisplayFullName" : "chr*" }
		            }
		          }
		      },
		      "end" : 2,
		      "boost" : 50.0
		    }}
	    ]
    }
  }
}
```

---

<div class="post-metadata">

**Author:** ![Jesper\_Bendtsen](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Jesper\_Bendtsen](https://discuss.elastic.co/u/Jesper_Bendtsen)\
**Post date:** [July 13, 2017, 7:43pm UTC](https://discuss.elastic.co/t/needs-help-for-name-search-higher-score-for-positions/92870/2 "2017-07-13T19:43:07Z")

</div>

Solved with "constant\_score"

```
{
  "explain": false,
  "size" : 50,
  "sort": [
		"_score",
		{
			"fieldSort": {
				"order": "asc"
			}
		}
	],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
              	{"match" : { "fieldDisplayFullName" : "peter" }},
              	{"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
       		{ "constant_score": {
        		"boost": 2,
    			"query": {"match_phrase_prefix" : { "fieldSort" : {"query" : "peter chr"}}}
	    	}}
	    ]
    }
  }
}
```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 10, 2017, 7:44pm UTC](https://discuss.elastic.co/t/needs-help-for-name-search-higher-score-for-positions/92870/3 "2017-08-10T19:44:14Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
