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


(Александр Петровский) #1
analyzer:
    analy:
        tokenizer: standard
        filter: [ synonym_filter ]
filter:
    synonym_filter:
        type: synonym_graph
        synonyms:
            - 'тюб, тюбик'

приводит к:

failed to build synonyms 

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

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

и так:

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
Версия elasticsearch 6.2.1 - windows 10, 6.2.4 - debian 9


(Igor Motov) #2

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


(Александр Петровский) #3

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

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


(Igor Motov) #4

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

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": ["тюб"]
}

(Igor Motov) #5

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


(Александр Петровский) #6

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

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


(Igor Motov) #7

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

{
  "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
}

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


(system) #8

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