gpt4 book ai didi

php - 如何在 elasticsearch 中使用 Unicode 字符进行搜索?

转载 作者:行者123 更新时间:2023-11-30 21:55:35 24 4
gpt4 key购买 nike

我已经将 MySQL 列索引到 elasticsearch 中,并且该列有一些 AR/EN/RO 语言值。如何使用 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 中使用它的信息。

最佳答案

我想我找到了如何在 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);

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

关于php - 如何在 elasticsearch 中使用 Unicode 字符进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45302197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com