Dưới đây là mã của tôi để tạo chỉ mục bằng cách sử dụng elasticsearch.Index đang được tạo thành công. Về cơ bản, tôi đang sử dụng nó để tạo tự động đề xuất tùy thuộc vào tên phim, tên diễn viên và chi. Bây giờ yêu cầu của tôi là, tôi cần phải phù hợp với chuỗi con với trường cụ thể. Điều này làm việc tốt nếu tôi sử dụng $params['body']['query']['wildcard']['field'] = '*sub_word*';
. (Tức là tìm kiếm 'to' cho 'tom kruz' nhưng tìm kiếm 'tom kr' không trả về kết quả nào) .Chuỗi kết hợp Elasticsearch trong php
Điều này chỉ khớp với một từ cụ thể trong chuỗi. Tôi muốn đối sánh chuỗi con chứa nhiều từ (ví dụ: 'tom kr' sẽ trả về 'tom kruz').
Tôi đã tìm thấy một vài tài liệu, cho biết sẽ có thể sử dụng 'ngram'. Nhưng tôi không biết, làm thế nào tôi nên thực hiện nó trong mã của tôi, như tôi đang sử dụng các cấu hình dựa trên mảng cho elasticsearch và tất cả các tài liệu hỗ trợ được đề cập đến cấu hình trong json fromat.
Vui lòng trợ giúp.
require 'vendor/autoload.php';
$client = \Elasticsearch\ClientBuilder::create()
->setHosts(['http://localhost:9200'])->build();
/*************Index a document****************/
$params = ['body' => []];
$j = 1;
for ($i = 1; $i <= 100; $i++) {
$params['body'][] = [
'index' => [
'_index' => 'pvrmod',
'_type' => 'movie',
'_id' => $i
]
];
if ($i % 10 == 0)
$j++;
$params['body'][] = [
'title' => 'salaman khaan'.$j,
'desc' => 'salaman khaan description'.$j,
'gener' => 'movie gener'.$j,
'language' => 'movie language'.$j,
'year' => 'movie year'.$j,
'actor' => 'movie actor'.$j,
];
// Every 10 documents stop and send the bulk request
if ($i % 10 == 0) {
$responses = $client->bulk($params);
// erase the old bulk request
$params = ['body' => []];
unset($responses);
}
}
// Send the last batch if it exists
if (!empty($params['body'])) {
$responses = $client->bulk($params);
}
Kính gửi costa, Cảm ơn bạn đã trả lời.Nhưng chỉ là một truy vấn, bạn có chắc chắn, chạy tìm kiếm theo ký tự đại diện cho các từ riêng lẻ sẽ cho tôi kết quả phù hợp nhất với chuỗi phụ đa từ? –