Sto costruendo una ricerca per un sito che utilizza una ricerca di testo completo. La ricerca funziona alla grande, non è un mio problema. Stringa insieme le parole chiave fornite dagli utenti (MATCH ... CONTRO ...) con le AND in modo che più parole restringano ulteriormente i risultati. Ora, so che certe parole di stop non sono indicizzate, e per me va bene che non voglio usarle come criteri di selezione. Tuttavia, se una parola chiave viene fornita nel set di parole chiave (dall'utente), uccide tutti i risultati (come previsto) anche se la parola si trova effettivamente in un determinato blocco di testo.ignorando le stringhe di testo completo mysql nella query
La mia domanda: c'è un modo per verificare se una determinata parola è una parola d'arresto al momento della richiesta? La mia soluzione preferita sarebbe semplicemente quella di escludere la parola pertinente dai criteri di ricerca (non mi interessa se un utente può restringere i risultati con la parola "nessuno", io non voglio che MySQL restituisca un set di risultati vuoto perché l'utente fornito, anche se nessuno dei due esiste nei risultati). Oppure, dovrò semplicemente svuotare l'elenco delle parole chiave? Grazie mille per qualsiasi aiuto.
modifica ---- Mi dispiace, ma in realtà non ci sono snippet di codice da prevedere per questo. Il codice funziona bene, in realtà esattamente come previsto. È più un problema logico con cui mi sto occupando. Ma, come un esempio, nel modo di spiegazione:
Diciamo che ci sono tre record, che includono le parole (ma non sono limitati a)
1: mela, arancia, mango, banana 2: uva , arancia, ananas, mango 3: patate, mango, melone, keira cavalleresco
Se la parola di ricerca immessa dall'utente è mango, tutti i risultati vengono restituiti correttamente. Se le parole sono arancione AND mango, i risultati 1 e 2 vengono restituiti (correttamente). Ora, diciamo che la banana è una parola d'arresto (non lo è ... ma supponiamo che lo sia), se la ricerca è per arancione, mango e banana, non viene restituito alcun risultato (perché la banana non è nell'indice fulltext).
Quello che sto cercando è se qualcun altro ha riscontrato questo problema e ha un modo per aggirare il problema. Una specie di:
if 'banana' NOT STOP WORD match 'banana' against `words`. (OBVIOUSLY not real code).
Oppure ... sono io solo andando a far cadere la lista stopwords ...
cosa hai provato? puoi fornirci qualche esempio? – jcho360
Sembra che nessuna delle risposte abbia davvero quello che stavi cercando. È sempre possibile scrivere il codice dell'applicazione per filtrare manualmente eventuali stopword (nonché parole troppo brevi) dalla query. Questo è probabilmente quello che faremo. –
2017 e lo stesso problema qui .. Sembra che mysql ricerca di testo completo è davvero povero progettato e manca di funzionalità di base .. – jgr