Анализаторы Elastica FOSElastica Symfony2 не работают

Я собираюсь выяснить, как работает Elastica/FOSElastica. Я запустил его для очень простых поисковых запросов, где название продукта точно соответствует моей строке поиска.

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

Я попытался просто скопировать и вставить этот пример кода (вставил мой индекс / типы, конечно) => http://obtao.com/blog/2013/10/configure-elasticsearch-on-an-efficient-way/

Итак, вот мой вопрос: как мне заставить работать мои анализаторы? Я думаю, я должен применить их в моем контроллере, но я не совсем уверен, как бы я это сделал...

Это мой конфиг

#app/config/config.yml

fos_elastica:
  clients:
    default: { host: localhost, port: 9200 }
  indexes:
    search:
      client: default
      settings:
        index:
          analysis:
            analyzer:
              custom_analyzer :
                type     :    custom
                tokenizer:    nGram
                filter   :    [stopwords, asciifolding ,lowercase, snowball, elision, worddelimiter]
              custom_search_analyzer :
                type     :    custom
                tokenizer:    standard
                filter   :    [stopwords, asciifolding ,lowercase, snowball, elision, worddelimiter]
              my_analyzer   _:
                  type: snowball
                  language: German
            tokenizer:
              nGram:
                type:     nGram
                min_gram: 2
                max_gram: 20
            filter:
              snowball:
                type:     snowball
                language: German
              elision:
                type:     elision
                articles: [l, m, t, qu, n, s, j, d]
              stopwords:
                type:      stop
                stopwords: [_german_]
                ignore_case : true
              worddelimiter :
                type:      word_delimiter
      types:
          article :
              mappings:
                    articleNumber: 
                    shortName:  [ boost: 6, analyzer : custom_analyzer, custom_search_analyzer, my_analyzer]
                    shortDescription:
                        index_analyzer : custom_analyzer
                        search_analyzer : custom_search_analyzer
                    longDescription: 
                        index_analyzer : custom_analyzer
                        search_analyzer : custom_search_analyzer
              persistence:
                  driver: orm
                  model: IndexBundle\Entity\Articles
                  finder: ~
                  provider: ~
                  listener: ~           

Это мой контроллер:

 $query = new \Elastica\Query\Match();

 $query->setFieldQuery(‘shortName’, $searchTerm);
 $query->setFieldFuzziness(‘shortName’, 0.7);
 $query->setFieldMinimumShouldMatch(‘shortName’, ’80%’);

 $boolQuery = new \Elastica\Query\Bool();
 $boolQuery->addMust($query);
 $baseQuery = $query;

 $filtered = new \Elastica\Query\Filtered($baseQuery);

 $query = \Elastica\Query::create($filtered);

 $articles = $finder->find($query);

0 ответов

Другие вопросы по тегам