Benvenuto,
Ospite
|
|
Ciao,
non mi è chiaro come posso fare una ricerca multitermine. Utilizzo l'interfaccia Mysqli. I miei file sono indicizzati perciò nel database. Nel form di ricerca inserisco delle parole e tramite un radiobutton decido se legarle con AND oppure OR. La ricerca dei termini deve essere fatta su due campi della tabella dell'indice, e cioè: name e body. In questo modo effettuo una ricerca sia sul nome del file che all'interno del contenuto del file. La ricerca in OR la faccio in questo modo: $ifileQueryRegistry = new IFileQueryRegistry();
foreach($parole as $parola){ //scorro i termini
$ifileQueryRegistry->setQuery($parola, 'name', IFileQuery::MATCH_OPTIONAL);
$ifileQueryRegistry->setQuery($parola, 'body', IFileQuery::MATCH_OPTIONAL);
}
// definizione dell'ordinamento
$ifile->setSort('key', SORT_STRING, SORT_DESC);
// chiamata al metodo di ricerca Multi-temine
$result = $ifile->query($ifileQueryRegistry); La ricerca in AND è necessario che leghi in OR le due condizioni dei campi. Per me la ricerca è in OR se fatta su nome del file o contenuto, però deve essere in AND sui differenti termini. L'avevo impostata così: for($i=0; $i<count($parole); $i++){
$ifileQueryRegistry_01 = new IFileQueryRegistry();
$ifileQueryRegistry_01->setQuery($parole[$i], 'name', IFileQuery::MATCH_OPTIONAL);
$ifileQueryRegistry_01->setQuery($parole[$i], 'body', IFileQuery::MATCH_OPTIONAL);
$ifileQueryRegistry->setQuery($ifileQueryRegistry_01, null, IFileQuery::MATCH_REQUIRED);
} Mi date dei suggerimenti per realizzare ciò che voglio fare? grazie Andrea |
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
|
|
d'altra parte non riesco neanche a capire perché questo codice sembra non restituire i risultati in AND.
foreach($parole as $parola){ //scorro i termini
$ifileQueryRegistry->setQuery($parola, 'name', IFileQuery::MATCH_REQUIRED);
//$ifileQueryRegistry->setQuery($parola, 'body', IFileQuery::MATCH_REQUIRED);
} Inoltre: è possibile combinare più tipologie di ricerca? oltre questa multitermine mi piacerebbe mettere insieme anche quella wildcard con i caratteri speciali. e poi: con la ricerca parser è possibile utilizzare la sintassi MYSQL FULLTEXT per ottenere tutti questi tipi di ricerca? ciao Andrea |
Ultima modifica: 03/04/2012 18:09 da trullox.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
|
|
Ciao Andrea,
potresti inviarmi un caso d'uso reale per verificare il tuo problema? Ad esempio potresti inviarmi anche tramite mail info[at]isapp.it un export di un paio di righe del DB e la configurazione di ifile in modo che possa fare anche io un paio di test. con la ricerca parser è possibile utilizzare la sintassi MYSQL FULLTEXT per ottenere tutti questi tipi di ricerca? utilizzando la ricerca parser è possibile scrivere direttamente le regole di ricerca FULL-TEXT di mysql. Esempio: // TEST Query PARSER
// Per l'utilizzo del metodo di ricerca PARSER si può utilizzare
// la sintassi di ricerca per le FULLTEXT di MySql
$search = "MATCH(body) AGAINST ('zend')";
// definizione dell'ordinamento
$ifile->setSort('key', SORT_STRING, SORT_DESC);
// chiamata al metodo di ricerca Parser
$result = $ifile->queryParser($search); |
If you like, if it was useful, consider a donation, Thanks
Se vuoi, se ti siamo stati utili, considera una donazione, Grazie Help us by voting our extensions on Joomla.org: JiFile JoomPhoto Mobile Easy Language
Ultima modifica: 03/04/2012 18:33 da Giampaolo.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
|
Facendo click su qualunque link della pagina si accetta il loro utilizzo. Per saperne di piu'