Si potrebbe anche prendere in considerazione Sphinx oppure Lucene per il testo completo come ricerche sul testo completo di mysql. Non li ho usati personalmente, ma ho sentito che entrambi sono superiori agli indici fulltext di mysql.
Una cosa da notare con tutti questi metodi è che richiedono un indice speciale da mantenere aggiornato che aggiunge più manutenzione e sovraccarico del server.
buon articolo su sfinge: http://astellar.com/2011/12/replacing-mysql-full-text-search-with-sphinx/
Per una soluzione non richiede manutenzione che fa bene per il nome del prodotto o il numero è solo per dividere i termini di ricerca degli utenti da spazi e aggiungere LIKE '% termine%' per ciascun alla tua richiesta .
Inoltre, creo un campo di ricerca speciale che è il nome o il numero del prodotto con i token alfabetici e spazi e simboli spogliati. È necessario aggiornare questo campo ogni volta che cambia il nome del prodotto. Quindi, oltre alle query relative al campo originale, cercare I OR
rispetto a questo nuovo campo rimosso. Esempio se hai un nome di prodotto come "cat 3306 longblock", quindi crea un campo product_name_search e posiziona "3306catlongblock". Quando un utente cerca 3306 long-block
si elabora la ricerca da simboli di strippaggio e splitting su spazi:
WHERE (other product name search clauses) OR
(product_name_search LIKE '%3306%' AND product_name_search LIKE '%longblock%')
Questo processo non è buono come testo libero ma lo fa abbastanza bene per i nomi e numeri.
fonte
2013-03-19 17:47:10
Grazie, Tim. Il campo di ricerca speciale potrebbe funzionare.Il problema più grande è che stiamo cercando "3306 longblock" quando il prodotto è denominato "Cat 3306 Long Block". Si noti la mancanza di spazio nel termine di ricerca. –
dovrai dividere la ricerca '3306 longblock' in ... LIKE '% 3306%' AND ... LIKE '% longblock%' rispetto al campo product_name_search elaborato –
Questo ha funzionato, grazie a Tim. –