Я использую ElasticSearch вместе с Symfony2 и FOSElasticaBundle. Затем я пытаюсь найти что-либо только с символами ASCII, это работает как шарм. Кроме того, я использую массив JSON для данных, и он преобразует символы Unicode в нечто вроде \ u00f8C. Может ли это повлиять на мою проблему? Мой код для поиска:ElasticSearch не найден по символам UTF8
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» и «S», «Е» и «E» и т.д.? Я имею в виду, я хотел бы получить такие же результаты с запросом, как «žąsis» и «zasis».
Спасибо, наконец, мне удалось заставить его работать. Мне пришлось использовать второй параметр json_encode JSON_UNESCAPED_UNICODE для индексированных значений, ведь я думаю, имеет смысл. –