Articoli marcati con tag ‘query’
Ricerca full-site per JuniorCMS.com
In questi giorni sto lavorando ad un plugin di ricerca il cui scopo è indicizzare tutti i contenuti pubblici di un sito web e permetterne una ricerca full-text.
Funzionalità di Base:
- Indicizzazione dell’output di una qualunque richiesta gestita dal CMS
- Gestione temporale (cache) di un indice di ricerca
- Eliminazione automatica delle risorse non più disponibili
- Grabbing automatico dei meta-tags (title e description) per la visualizzazione dei risultati
- Possibilità di configurare con precisione i testi del risultato della ricerca durante la produzione di una risorsa
- Personalizzazione dell’url del motore di ricerca
- Completa personalizzazione del look&feel del motore di ricerca
Alcuni Dettagli:
Il plugin può essere arricchito tramite addOns per migliorarne l’integrazione con altri software (news, offerte, etc). Una qualunque pagina, ad esempio, può personalizzare in modo molto forte il testo visualizzato come risultato di una ricerca.
Sto inoltre cercando delle collaborazioni per aumentare la validità della ricerca interna e creare un piccolo sistema di page-ranking e/o ricerca approfondita… ma forse questo comporta un forte dispendio di risorse!
Futuri sviluppi:
Nuovi plugin estenderanno questo motore di ricerca fornendo funzionalità di amministrazione quali:
- visualizzazione e possibilità di modificare il database degli indici cache
- possibilità di rendere permanente un indice (non più soggetto a scadenza cache)
- possibilità di nascondere un indice alla ricerca
- possibiltià di modificare la destinazione di un indice verso una pagina interna (redirect)
Altre idee di sviluppo riguardano una gestione statistica del motore di ricerca al fine di ottimizzare i contenuti del sito:
- Log delle ricerche effettuate
- Monitor delle ricerche frequenti
- Monitor delle ricerche vuote
- Monitor delle parole chiave più usate
- Possibilità di realizzare un “redirect di ricerca” ovvero prendere una query di ricerca e trasformarla in un’altra query.
Ulteriori ipotesi (molto remote) di sviluppo in versione “advertising”:
- Possibilità di inserire banner nei risultati della ricerca da template
- Emulazione di un sistema “AdSense” nei risultati della ricerca
Utilizzare operatori sql in CakePHP find()
Riporto il sunto di una discussione sviluppata sul Gruppo Google di CakePHP inerente all’utilizzo di operatori SQL nelle operazioni di estrazione dati (finder query):
http://groups.google.com/group/cake-php/browse_thread/thread/89dd8a8846bad3a1?hl=en
L’autore ha la necessità di estrarre da un campo di testo un numero limitato di caratteri utilizzando l’operatore SQL LEFT:
LEFT(Table.field, len) as new_field_name
La soluzione proposta (e testata) consiste nell’utilizzo dell’operatore direttamente nell’elenco dei campi da estrarre come parametro aggiuntivo dell’operazione find().
$list = $this->User->find( "all", array(
fields = array(
'id',
'username',
'left(User.username, 5) as short_username'
)
));
Questo comando di estrazione genera come output la seguente struttura associativa:
array(
0 => array(
[User] => array(
[id] => 1
[username] = Marco Pegoraro
)
[0] => array(
[short_username] => Marco
)
)
)
Si può dunque notare come il campo ottenuto mediante operatore SQL sia stato erogato fuori dal raggruppamento del modello e inserito sotto ad un indice numerico.
Ho fatto alcuni test utilizzando le relazioni tra i modelli (belongsTo) e ho estratto campi da più modelli definendo campi elaborati da più modelli. Tali campi vengono sempre proposti sotto l’indice 0.
Al momento in cui scrivo la discussione è in attesa di una soluzione per modificare in modo esplicito il nome del raggruppamento di questi campi prodotto di un operatore SQL.