# ES влияние на релевантность результатов полнотекстового поиска

**URL:** <https://discuss.elastic.co/t/es/106426>\
**Category:** Вопросы на русском языке\
**Created:** [November 5, 2017, 1:40pm UTC](https://discuss.elastic.co/t/es/106426 "2017-11-05T13:40:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![karelianboy1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/karelianboy1/32/26477_2.png) [@karelianboy1](https://discuss.elastic.co/u/karelianboy1)\
**Post date:** [November 5, 2017, 1:40pm UTC](https://discuss.elastic.co/t/es/106426/1 "2017-11-05T13:40:58Z")

</div>

ES предполагается для использования в качестве полнототекстового поиска. Одно из требований - выдача результатов поиска сначала тех, кот. относятся к городу пользователя.  
Город пользователя определяется через dadata. Это строка. Например "Москва". Каждый документ в индексе содержит поле localities, где хранится список городов.

```auto
"localities": [
            "Воронеж",
            "Адреевск",
            "Харьков"
          ]

```

Запрос сейчас делаю так:

```auto
POST /myindex/_search
{
  
  "query": {
    "query_string": {
      "query": "еда Воронеж",
      "analyze_wildcard" : true,
      "fields": [
"localities:^3"        
"categories^2",
        "workTypes^1",
         
      ]
    }
  }
}

```

Правильно я понимаю, что документ, где будет найдено слово "Воронеж" будет иметь более высокий \_score?  
ES версии 5.6

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [November 6, 2017, 4:37pm UTC](https://discuss.elastic.co/t/es/106426/2 "2017-11-06T16:37:48Z")

</div>

> [@karelianboy1](#):
>
> Правильно я понимаю, что документ, где будет найдено слово "Воронеж" будет иметь более высокий \_score?

Почти. \_score полученный в результате совпадения по полю `localities` будет умножен на 3 и потом добавлен к \_score в остальных полях. То есть конечный результат для каждого документа будет `score(workTypes) + score(categories) * 2 + score(localities) * 3`

---

<div class="post-metadata">

**Author:** ![karelianboy1](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/karelianboy1/32/26477_2.png) [@karelianboy1](https://discuss.elastic.co/u/karelianboy1)\
**Post date:** [November 6, 2017, 7:09pm UTC](https://discuss.elastic.co/t/es/106426/3 "2017-11-06T19:09:57Z")

</div>

Игорь, спасибо.  
Еще вопрос. Я использую query\_string, а есть еще simple\_query\_string. Не уловил в чем разница. Не подскажете в двух словах?  
В документации написано, что simple\_query\_string не вызывает exception. А когда может возникнуть exception?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [November 6, 2017, 7:46pm UTC](https://discuss.elastic.co/t/es/106426/4 "2017-11-06T19:46:01Z")

</div>

> [@karelianboy1](#):
>
> Не подскажете в двух словах?

Контроль над запросом. Можно контролировать по каким полям искать и ограничивать тяжелые операции типа `*a*`.

> [@karelianboy1](#):
>
> А когда может возникнуть exception?

Попробуйте задать запрос типа `Воронеж AND`

---

<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:** [December 4, 2017, 7:46pm UTC](https://discuss.elastic.co/t/es/106426/5 "2017-12-04T19:46:16Z")

</div>

Closed on December 4, 2017, 7:46pm UTC

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