Ngram не работает как настроенный - PullRequest
0 голосов
/ 30 октября 2018

Я работаю с использованием аннотаций поиска в спящем режиме, но есть также реализация Elasticsearch. Мой токенизатор не разделяется в соответствии с его конфигурациями. В частности, я ожидаю, что строка будет разделена минимум 3 символами. Но он игнорирует мою конфигурацию и продолжает делить enter image description here как минимум на единицу. Что я делаю не так?

@AnalyzerDef(name = "EdgeNgram",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
        @TokenFilterDef(factory = StandardFilterFactory.class),
        @TokenFilterDef(factory = LowerCaseFilterFactory.class),
        @TokenFilterDef(factory = NGramFilterFactory.class,
                params = {
                        @Parameter(name = "minGramSize", value = "3"),
                        @Parameter(name = "maxGramSize", value = "20")})
})

1 Ответ

0 голосов
/ 30 октября 2018

Ваша разница между minGramSize и maxGramSize, честно говоря, огромна. Кажется, Elasticsearch игнорирует ваши настройки и использует значение по умолчанию (1,2).

В документации nGramTokenizer говорится, что существует максимально допустимая разница.

В соответствии с документацией к модулю индекса это значение по умолчанию равно 1.

Я подозреваю, что Elasticsearch отклоняет предоставленное вами определение из-за этого. Вы можете попробовать установить index.max_ngram_diff в настройках вашего индекса.

...