2009-09-17 11 views
9

Sto lavorando con la ricerca full text di MySQL ma trovo che manchi in situazioni in cui la stringa fa parte di una parola all'interno di un campo. Se il mio campo è "New York Times" e cerco "Tempo" non ottengo risultati. Il modo hackish per risolvere questo è quello di istituire due query, uno che fa una ricerca full text e l'altro che fa:MYSQL Ricerca testo completo e LIKE

SELECT * FROM ___ WHERE 'string' LIKE %searchterm% 

C'è un modo che io possa impostare il mio ricerca a testo integrale per risolvere questo problema quindi non devo eseguire la query aggiuntiva?

risposta

2

Ho praticamente rinunciato alla ricerca full text di MySql a favore di Sphinx - un motore di ricerca full-text dedicato che implementa il protocollo di rete MySql in modo da poterlo "interporre" tra i client e un server MySql, senza perdere nulla e ottenere funzionalità complete e serie di testo completo. Forse non è adatto alle tue esigenze (che non esprimi appieno), ma penso che sia almeno in corso il check-out!

+0

Cool grazie mille. Giusto per chiarire la mia domanda. Ho un campo che è il New York Giants. Se aggiungo questo all'indice fulltext e poi cerco "giant", non verrà visualizzato nulla. Come posso utilizzare la ricerca full-text per restituire risultati in casi come questi? Controllerò Sfinge. Grazie per l'heads up –

+0

@Russ, stai cercando ** plugin ** di plugin (per mysql 5.1, 5.0 non li supporta), ad es. http://www.mnogosearch.org/doc/msearch-udmstemmer.html. –

+0

Grazie mille Alex, apprezzo l'aiuto. Sfortunatamente, le mie mani sono legate e non posso aggiornare a MySQL 5.1. Ma sono un po 'confuso, sottolineo che in 5.0 non posso usare parser cliente ma questo significa che non esiste un metodo nativo mysql per fare lo stemming in 5.0? –

6

È possibile utilizzare i caratteri jolly nella ricerca testo completo. Maggiori informazioni here

SELECT * FROM _____ WHERE MATCH (title) AGAINST ('time*' IN BOOLEAN MODE); 
+0

hmmm bello bello. Non ci ho pensato. L'unico problema è che è un povero sostituto per lo stemming poiché non corrisponderà ai "tempi" e alle parole del genere. Ho scelto di eseguire sia una ricerca a testo completo che una ricerca LIKE% ...% per la ricerca di stringhe. È un po 'noioso e richiede più query ma genera risultati abbastanza solidi. –

+0

Inoltre, non aiuta quando una ricerca deve passare dall'altra parte. Ad esempio, i dati includono la parola "ipad" ma l'utente cerca "ipad". Il carattere jolly non sarà di aiuto in questo caso. – Vincent

+0

@Arnold 'LIKE% ...%' ucciderà le tue prestazioni, perché SQL non utilizzerà gli indici. Se segui questo approccio, probabilmente non avrai bisogno della ricerca di testo completo. – PeerBr

Problemi correlati