2017-07-25 70 views
1

我已经将MySQL列索引到elasticsearch,并且此列有一些AR/EN/RO语言值。 如何使用unicode字符串在这些索引内搜索?如何在elasticsearch中使用Unicode字符进行搜索?

$hosts = ['localhost:9200'];    
$client = \Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build(); 

$body = '{ "query": { 
"filtered": { 
    "query": { 
    "match_all": {} 
    }, 
    "filter": { 
    "bool": { 
     "must": [ 
     {"query": {"wildcard": {"text": {"value": "*'.$term.'*"}}}}, 
     {"query": {"wildcard": {"group": {"value": "hotels_cities"}}}} 
     ] 
    } 
    } 
} }}'; 



$params['index'] = 'my_custom_index_name'; 
$params['type'] = 'translator_translations'; 
$params['body'] = $body; 

$results = $client->search($params); 

输出命中为零。

- 有一种叫做分析器的东西,但是没有关于如何在PHP中使用它的信息。

回答

0

我想我找到了如何在Elasticsearch中索引unicode语言字符的答案,希望这对任何人都有用。

  • 首先你要设置你的索引名

  • 设置有过滤和语言分析新的语言设置,就像这样:

    $client = ClientBuilder::create()  // Instantiate a new ClientBuilder 
          ->setHosts(['localhost:9200'])  // Set the hosts 
          ->build(); 
    
    $lang = 'el'; // Greek in my case 
    
    $param['index'] = 'test_' . $lang; // index name 
    
    // uncomment this line if you want to delete an existing index 
    // $response = $client->indices()->delete($param); 
    
    $body = '{ 
        "settings": { 
        "analysis": { 
         "filter": { 
         "greek_stop": { 
          "type":  "stop", 
          "stopwords": "_greek_" 
         }, 
         "greek_lowercase": { 
          "type":  "lowercase", 
          "language": "greek" 
         }, 
         "greek_keywords": { 
          "type":  "keyword_marker", 
          "keywords": ["παράδειγμα"] 
         }, 
         "greek_stemmer": { 
          "type":  "stemmer", 
          "language": "greek" 
         } 
         }, 
         "analyzer": { 
         "greek": { 
          "tokenizer": "standard", 
          "filter": [ 
          "greek_lowercase", 
          "greek_stop", 
          "greek_keywords", 
          "greek_stemmer" 
          ] 
         } 
         } 
        } 
        } 
    }'; 
    
    $param['body'] = $body; // store the JSON body as a parameter in the main array 
    
    $response = $client->indices()->create($param); 
    

然后开始用希腊字符索引您的值

相关问题