Di seguito è riportato il mio codice per generare l'indice utilizzando elasticsearch.Index viene generato correttamente. Fondamentalmente lo sto utilizzando per generare autosuggest a seconda del nome del film, nome dell'attore e gener.Elasticsearch corrisponde alla sottostringa in php
Ora la mia richiesta è, ho bisogno di abbinare sottostringa con particolare field.This sta funzionando benissimo se uso $params['body']['query']['wildcard']['field'] = '*sub_word*';
. (Vale a dire la ricerca di 'a' dà 'tom Kruz', ma la ricerca di 'tom kr' non restituisce alcun risultato) .
Ciò corrisponde solo a una parola specifica in stringa. Voglio corrispondere alla sottostringa contenente più parole (ad esempio 'tom kr' dovrebbe restituire 'tom kruz').
Ho trovato pochi documenti, dicendo che sarà possibile utilizzare 'ngram'. Ma non so, come dovrei implementarlo nel mio codice, perché sto usando configurazioni basate su array per elasticsearch e tutti i documenti di supporto menzionano la configurazione in json fromat.
prega di aiuto.
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);
}
Caro Costa, Grazie per la risposta. Ma solo una domanda, sei sicuro, eseguire la ricerca con caratteri jolly per singole parole mi darà risultati più pertinenti che corrispondono alla sottostringa multiword? –