elasticsearch,foselasticabundle,Symfony,elasticsearch,Foselasticabundle" /> elasticsearch,foselasticabundle,Symfony,elasticsearch,Foselasticabundle" />

Symfony ElasticSearch未按UTF8字符查找

Symfony ElasticSearch未按UTF8字符查找,symfony,elasticsearch,foselasticabundle,Symfony,elasticsearch,Foselasticabundle,我正在使用ElasticSearch以及Symfony2和FOSElasticaBundle。然后我试着找到任何只有ASCII字符的东西,它就像一个符咒。另外,我使用JSON数组来处理数据,它将unicode字符转换为类似\u00f8C的内容。这会影响我的问题吗?我的搜索代码: function __construct(Request $request, TransformedFinder $artist_finder, TransformedFinder $picture_finder, Ro

我正在使用ElasticSearch以及Symfony2和FOSElasticaBundle。然后我试着找到任何只有ASCII字符的东西,它就像一个符咒。另外,我使用JSON数组来处理数据,它将unicode字符转换为类似\u00f8C的内容。这会影响我的问题吗?我的搜索代码:

function __construct(Request $request, TransformedFinder $artist_finder, TransformedFinder $picture_finder, Router $router)
{
    $this->request = $request;
    $this->a_finder = $artist_finder;
    $this->p_finder = $picture_finder;
    $this->router = $router;
}

/**
 * @param $query
 * @return array
 */
public function search($query)
{
    $locale = $this->request->getLocale();

    $artist_results = $this->a_finder->find($query.'*', self::SEARCH_LIMIT);
    $gallery_results = $this->p_finder->find($query.'*', self::SEARCH_LIMIT);

    $results = array(
        'artist' => array(),
        'gallery' => array()
    );

    foreach($artist_results as $a)
    {
        $results['artist'][] = array(
            'url' => $this->router->generate('artist_page', ['slug' => $a->getSlug()]),
            'name' => $a->getInfo()[$locale]['name']. ' ' .$a->getInfo()[$locale]['surname']
        );
    }

    foreach($gallery_results as $a)
    {
        $results['gallery'][] = array(
            'url' => $this->router->generate('picture_page', ['slug' => $a->getSlug()]),
            'name' => $a->getInfo()[$locale]['title']
        );
    }

    return $results;
}
此外,ES是否能够看到立陶宛文字之间的差异,例如“Ė”和“S”、“Ė”和“E”等?我的意思是,我想用“žąsis”和“zasis”这样的查询得到相同的结果。

您必须配置

根据您的需要,可以使用不同的分析仪。还有一些特定的语言,请查看相关的。

您必须配置

根据您的需要,可以使用不同的分析仪。还有一些特定的语言,请查看相关的。

您需要插件和一些过滤器配置(在我的例子中是捷克语)。。。e、 g

您需要插件和一些过滤器配置(在我的例子中是捷克语)。。。e、 g


我已经设法使它起作用了。我必须使用第二个json_编码参数json_UNESCAPED_UNICODE来表示索引值,我认为这是有意义的

我已经设法让它工作了。我必须使用第二个json_编码参数json_UNESCAPED_UNICODE来表示索引值,我认为这是有意义的

谢谢你,我终于成功了。我必须使用第二个json_编码参数json_UNESCAPED_UNICODE来表示索引值,我认为这是有意义的。谢谢,我终于成功了。我必须使用第二个json_编码参数json_UNESCAPED_UNICODE来表示索引值,我认为这是有意义的。
settings:
    analysis:
      analyzer:
        cs_collation:
          type: custom
          tokenizer: keyword
          filter: [trim,cs_icu_collation]
        cs_facets:
          type: custom
          tokenizer: keyword
          filter: [trim]
        custom_analyzer_cs:
          type     :    custom
          tokenizer:    nGram
          filter   :    [stopwords, lowercase, czech_stemmer, asciifolding, snowball, worddelimiter]


filter:
    czech_stemmer:
      type: stemmer
      name: czech
    cs_icu_collation:
      type: icu_collation
      stopwords: [_czech_]
      language: cs