Создание индекса с помощью английского анализатора с помощью Nest - PullRequest
0 голосов
/ 26 мая 2018

Я использую гнездо для создания моего индекса Elasticsearch.У меня два вопроса:

Вопрос 1. Как добавить настройки для использования анализатора английского языка с отступлением для стандартного анализатора?

Вот как я создаюмой индекс:

Uri _node = new Uri("elasticUri");
ConnectionSettings _connectionSettings = new ConnectionSettings(_node)
            .DefaultIndex("MyIndexName")
            .DefaultMappingFor<POCO>(m => m
            .IndexName("MyIndexName")
        );
IElasticClient _elasticClient = new ElasticClient(_connectionSettings);

var createIndexResponse = _elasticClient.CreateIndex("MyIndexName", c => c
   .Mappings(m => m
      .Map<POCO>(d => d.AutoMap())
   )
);

Глядя на примеры Здесь , я также не уверен, что я должен получить за "english_keywords" , "english_stemmer" и т. Д.

Вопрос 2 : Если я использую English Analyzer, сможет ли Elasticsearch автоматически понять, что термины «Барбекю» и «Барбекю» являются синонимами?Или мне нужно явно передать список синонимов в ES?

1 Ответ

0 голосов
/ 27 мая 2018

Посмотрите на документацию NEST для настройки встроенного анализатора для индекса .

Документация для english анализатора просто демонстрирует, какВы можете переопределить анализатор english самостоятельно, как пользовательский анализатор, со встроенными компонентами анализа, если вам нужно настроить какую-либо часть анализа.Если вам не нужно это делать, просто используйте english в качестве имени для анализатора для поля

client.CreateIndex("my_index", c => c
    .Mappings(m => m
        .Map<POCO>(mm => mm
            .AutoMap()
            .Properties(p => p
                .Text(t => t
                    .Name(n => n.MyProperty)
                    .Analyzer("english")
                )
            )
        )
    )
); 

Будет использоваться встроенный анализатор english для поля MyProperty наPOCO.

Анализатор english не будет выполнять автоматическое расширение синонимов для вас, вам необходимо настроить синонимы, соответствующие вашей проблеме поиска.У вас есть два варианта в отношении синонимов

  1. Выполнить расширение синонимов во время индекса на входе индекса.Это приведет к более быстрому поиску за счет относительно фиксированного подхода.
  2. Выполнение раскрытия синонимов во время запроса на входе запроса.Это приведет к более медленному поиску, но дает возможность более легко добавлять новые сопоставления синонимов по мере необходимости.

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

...