# Cross fields +different analyzers +profile API

**URL:** <https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120>\
**Category:** Вопросы на русском языке\
**Created:** [July 6, 2017, 2:23pm UTC](https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120 "2017-07-06T14:23:10Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![klara](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/klara/32/18440_2.png) [@klara](https://discuss.elastic.co/u/klara)\
**Post date:** [July 6, 2017, 2:23pm UTC](https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120/1 "2017-07-06T14:23:10Z")

</div>

Столкнулась с неожиданным поведением:  
Запрос dus\_max-multi\_match-cross field

Среди полей есть:  
Brand.string analyzer1  
Brand.hyphen\_string analyzer1  
Goodsname.string analyzer2

Есть товар 1:

> {Goodsname.string : "футболка lego "  
> Brand.string : "lego "}

товар 2:

> {Goodsname.string : "футболка "  
> Brand.string : "lego "}

Если query: `" футболка lego"`

```
Результат только товар1. Почему товар2 нет?

```

Если ` запрос "lego"\"футболка" результат : товар1+ товар2`

В `profile` видно, что query обрабатывается так:

`(+((+(brand.string:футболка | brand.string.hyphen_search:футболка) +(brand.string:lego | brand.string.hyphen_search:lego)) (+(goodsName:футболка | subject.value:футболка | tags.search_string:футболка) +(goodsName:lego | subject.value:lego | tags.search_string:lego)) subject.value.raw:футболка lego) )`

Связано ли это с разными анализаторами?почему? :

> Brand.string analyzer1  
> Goodsname.string analyzer2

в profile видно, что сгруппированы отдельно поиск в brand поле и goodsName, почему не был взят документ, который частично из первого и второго запросов?

---

<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:** [July 6, 2017, 7:13pm UTC](https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120/2 "2017-07-06T19:13:46Z")

</div>

Вы не могли бы показать, как воспроизвести проблему полностью, с примером как в [этом ответе](https://discuss.elastic.co/t/topic/87136/8?u=igor_motov)?

---

<div class="post-metadata">

**Author:** ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)\
**Post date:** [July 7, 2017, 6:29am UTC](https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120/3 "2017-07-07T06:29:35Z")

</div>

ну да. это вроде то, про это часто разоряется старик Тарнбол. Разные анализаторы дают разные ветки дизньюнкций. нагуглилось [https://stackoverflow.com/a/36051941/849851](https://stackoverflow.com/a/36051941/849851) [https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#\_literal\_cross\_field\_literal\_and\_analysis](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#_literal_cross_field_literal_and_analysis)

---

<div class="post-metadata">

**Author:** ![klara](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/klara/32/18440_2.png) [@klara](https://discuss.elastic.co/u/klara)\
**Post date:** [July 7, 2017, 7:44am UTC](https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120/4 "2017-07-07T07:44:27Z")

</div>

```
GET products/nms/_search
{"profile":true,
  
  "query": {
    "constant_score": {
      "query": {
        "bool": {
          "must": [
            {
              "dis_max": {
                "queries": [
                  {
                    "multi_match": {
                      "type": "cross_fields",
                      "query": "кроссовки nike",
                      "minimum_should_match": "30%",
                      "operator": "and",
                      "fields": [
                       "brand.string", 
                       "brand.string.hyphen_search", 
                        "subject.value^20",
                        "groups.value"
                        //"brand.name",
                   // "brand.value.raw",
                       // "brand.directionName"
                      ]
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

```

hits : 0  
profile:

```
> "description": "+ConstantScore((+groups.value:кроссовки +groups.value:nike) 
> (+(brand.string:кроссовки | brand.string.hyphen_search:кроссовки)
> +(brand.string:nike | brand.string.hyphen_search:nike))
> (+subject.value:кроссовка +subject.value:nike)) #(ConstantScore(_type:nms))^0.0",

```

> GET products/nms/\_search  
> {"profile":true,  
> "size": 0,  
> "query": {  
> "constant\_score": {  
> "query": {  
> "bool": {  
> "must": [  
> {  
> "dis\_max": {  
> "queries": [  
> {  
> "multi\_match": {  
> "type": "cross\_fields",  
> "query": "кроссовки nike",  
> "minimum\_should\_match": "30%",  
> "operator": "and",  
> "fields": [  
> "brand.string",  
> "brand.string.hyphen\_search",  
> "subject.value^20",  
> "groups.value",  
> "brand.name",  
> "brand.value.raw",  
> "brand.directionName"  
> ]  
> }  
> }  
> ]  
> }  
> }  
> ]  
> }  
> }  
> }  
> }  
> }

"hits":  
"total": 1946  
profile: ...

> "description": "+ConstantScore((+groups.value:кроссовки +groups.value:nike) (+(brand.string:кроссовки | brand.string.hyphen\_search:кроссовки) +(brand.string:nike | brand.string.hyphen\_search:nike)) (+(brand.directionName:кроссовка | brand.name:кроссовка | (subject.value:кроссовка)^20.0) +(brand.directionName:nike | brand.name:nike | (subject.value:nike)^20.0)) brand.value.raw:кроссовки nike) #(ConstantScore(\_type:nms))^0.0"

---

<div class="post-metadata">

**Author:** ![klara](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/klara/32/18440_2.png) [@klara](https://discuss.elastic.co/u/klara)\
**Post date:** [July 7, 2017, 7:51am UTC](https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120/5 "2017-07-07T07:51:07Z")

</div>

Gist c [mapping](https://gist.github.com/Bklara/c3d7909968598364336f5f5172e471dd)

Похоже на то :

> Mikhail\_Khludnev: ну да. это вроде то, про это часто разоряется старик Тарнбол. Разные анализаторы дают разные ветки дизньюнкций. нагуглилось [lucene - Elasticsearch multi-match cross fields query with different query analyzers - Stack Overflow](https://stackoverflow.com/a/36051941/849851) [Multi-match query | Elasticsearch Guide [8.11] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#_literal_cross_field_literal_and_analysis)

---

<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 4, 2017, 7:51am UTC](https://discuss.elastic.co/t/cross-fields-different-analyzers-profile-api/92120/6 "2017-08-04T07:51:09Z")

</div>

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