2015-01-24 13 views
1

나는 Symfony2 및 FOSElasticaBundle과 함께 ElasticSearch를 사용하고 있습니다. 그렇다면 ASCII 문자만으로 무엇이든 찾으려합니다. 그것은 매력처럼 작동합니다. 또한 데이터 용 JSON 배열을 사용하고 유니 코드 문자를 \ 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; 
} 

, 예를 들어 "S"와 "S", "E"및 "E"등을 들어, 리투아니아어 문자 사이의 차이를 볼 수있는 능력을 ES가 있습니까? 제 말은 "žąsis"와 "zasis"같은 쿼리를 사용하여 동일한 결과를 얻고 싶습니다.

답변

2

나는 그걸 만들 수있었습니다. 두 번째 json_encode 매개 변수 JSON_UNESCAPED_UNICODE를 인덱싱 된 값에 사용해야한다고 생각합니다.

1

필터 (예 : 체코 어)의 경우 플러그인 및 일부 구성이 필요합니다. 예 :

+0

고마워, 마침내 나는 그걸 만들 수있었습니다. 두 번째 json_encode 매개 변수 JSON_UNESCAPED_UNICODE를 인덱싱 된 값에 사용해야한다고 생각합니다. –

관련 문제