# Не получается загрузить таблицу русских синонимов с tokenizer: standard

**URL:** <https://discuss.elastic.co/t/tokenizer-standard/131371>\
**Category:** Вопросы на русском языке\
**Created:** [May 10, 2018, 11:38pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371 "2018-05-10T23:38:46Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![0a65943d6710c3373c00](https://avatars.discourse-cdn.com/v4/letter/0/6bbea6/32.png) [@0a65943d6710c3373c00](https://discuss.elastic.co/u/0a65943d6710c3373c00)\
**Post date:** [May 10, 2018, 11:38pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/1 "2018-05-10T23:38:46Z")

</div>

```auto
analyzer:
    analy:
        tokenizer: standard
        filter: [synonym_filter]
filter:
    synonym_filter:
        type: synonym_graph
        synonyms:
            - 'тюб, тюбик'

```

приводит к:

```auto
failed to build synonyms 

```

однако работает вот так:

```auto
analyzer:
    analy:
        tokenizer: standard
        filter: [synonym_filter]
filter:
    synonym_filter:
        type: synonym_graph
        synonyms:
            - 'tub, tubik'

```

и так:

```auto
analyzer:
    analy:
        tokenizer: whitespace
        filter: [synonym_filter]
filter:
    synonym_filter:
        type: synonym_graph
        synonyms:
            - 'тюб, тюбик'

```

Но мне необходим именно standard tokeniser, который удаляет знаки препинания. В чем может быть причина и как исправить?

Так же пробовал указывать путь к файлу с синонимами, сохраненный в UTF-8 - такая же ошибка.

С **type: synonym** аналогичная ситуация. Кстати, в чем разница между ними?  
В листинге синтаксис конфига [https://github.com/ruflin/Elastica](https://github.com/ruflin/Elastica)  
Версия elasticsearch 6.2.1 - windows 10, 6.2.4 - debian 9

---

<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:** [May 11, 2018, 1:44pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/2 "2018-05-11T13:44:44Z")

</div>

А какая версия PHP и Elastica? И как выглядит сам PHP код, который этот индекс создает?

---

<div class="post-metadata">

**Author:** ![0a65943d6710c3373c00](https://avatars.discourse-cdn.com/v4/letter/0/6bbea6/32.png) [@0a65943d6710c3373c00](https://discuss.elastic.co/u/0a65943d6710c3373c00)\
**Post date:** [May 11, 2018, 2:17pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/3 "2018-05-11T14:17:30Z")

</div>

PHP 7.2, Elastica 6.0.0, friendsofsymfony/elastica-bundle 5.0

сейчас попробую достать запрос к elastic search

---

<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:** [May 11, 2018, 2:28pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/4 "2018-05-11T14:28:44Z")

</div>

Я пробовал, на прямую все работает -

```auto
DELETE test

PUT test
{
  "analysis": {
    "analyzer": {
      "analy": {
        "tokenizer": "standard",
        "filter": [
          "synonym_filter"
        ]
      }
    },
    "filter": {
      "synonym_filter": {
        "type": "synonym_graph",
        "synonyms": [
          "тюб, тюбик"
        ]
      }
    }
  }
}

GET test/_analyze
{
  "analyzer": "analy",
  "text": ["тюб"]
}

```

---

<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:** [May 11, 2018, 2:32pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/5 "2018-05-11T14:32:44Z")

</div>

Скорее всего баг в Elastica, если вы код, который воспроизводит проблему пришлете - я могу попробовать его автору переслать.

---

<div class="post-metadata">

**Author:** ![0a65943d6710c3373c00](https://avatars.discourse-cdn.com/v4/letter/0/6bbea6/32.png) [@0a65943d6710c3373c00](https://discuss.elastic.co/u/0a65943d6710c3373c00)\
**Post date:** [May 11, 2018, 2:39pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/6 "2018-05-11T14:39:01Z")

</div>

Извините пожалуйста, я обманул - дал пример и не протестировал его. С ним нет ошибок.

Ошибка была из - за группы синонимов 'шт, штук, **№** , ном, номер' - видимо как - то связано с тем, что tokenizer: standard не переваривает **№**

---

<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:** [May 11, 2018, 2:44pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/7 "2018-05-11T14:44:16Z")

</div>

Да, с `№` я получаю

```auto
{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "failed to build synonyms"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "failed to build synonyms",
    "caused_by": {
      "type": "parse_exception",
      "reason": "Invalid synonym rule at line 2",
      "caused_by": {
        "type": "illegal_argument_exception",
        "reason": "term: № was completely eliminated by analyzer"
      }
    }
  },
  "status": 400
}

```

Это вполне логично

---

<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:** [June 8, 2018, 2:48pm UTC](https://discuss.elastic.co/t/tokenizer-standard/131371/8 "2018-06-08T14:48:28Z")

</div>

Closed on June 8, 2018, 2:48pm UTC

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