2012-05-14 8 views
5

Mi piacerebbe emulare questo tipo di query Solr:Come si può emulare un Solr "più simile a questa query" con Postgresql ricerca full-text?

http://wiki.apache.org/solr/MoreLikeThis

con PostgreSQL usando la sua piena funzione di ricerca del testo.

C'è un modo per fare qualcosa come una query "più simile a questa con postgres puro?

+0

potresti aggiungere ulteriori informazioni, quali sono le tue esigenze? Stai cercando documenti simili tra loro? Classificazione dei documenti con una ricerca a testo integrale? Una sorta di approccio ibrido? –

risposta

1

Non fuori dalla scatola, temo. Potrebbe essere possibile confrontare due tsvector per determinare se sono abbastanza simili, o tirare il top n tsvector simile, ma non ci sono funzionalità out-of-the-box per farlo. La buona notizia è che siccome i vettori satellitari supportano l'indicizzazione GIN, la parte complicata è fatta per te.

Quello che penso che dovresti fare è creare una funzione in C che determini l'intersezione di due tsvector. Da lì è possibile creare una funzione che determina se si sovrappongono e un operatore che risolve questo problema. Da lì non dovrebbe essere troppo difficile creare una classifica basata sulla più grande sovrapposizione.

Naturalmente ho il sospetto che ciò sia più facile da fare in una lingua come C, ma probabilmente si potrebbero usare anche altri linguaggi procedurali se è necessario.

La cosa meravigliosa di PostgreSQL è che tutto è possibile. ovviamente il rovescio della medaglia è che quando ti allontani dalla funzionalità di base puoi farlo da solo.

Problemi correlati