2017-10-01 6 views
-3

J'essaie de faire un moteur de recherche PHP multilingue intelligent. Par exemple, je veux rechercher samsung smarthphone et le type d'utilisateur smasung smortphone. Quel est le meilleur moyen de l'extraire d'un DB de 1 000 000 lignes? Mon idée était de sélectionner les lignes où cette REGEXP (pour cet exemple) correspondPHP MySQl moteur de recherche de conseils

'[a-zA-z]*[smasung]{4,}[a-zA-Z]*' AND '[a-zA-Z]*[smortphone]{5,}[a-zA-Z]*' 

Ceci est selectinh moi toutes les lignes qui a un mot qui contient au moins 4 ou 5 lettres de l'entrée utilisateur. Mais cela signifie d'exécuter cette expression rationnelle à chaque ligne sélectionnée, puis de lisser la correspondance avec l'entrée de l'utilisateur et enregistrer la meilleure correspondance. Pour 1 000 000, c'est plutôt lent. As-tu une meilleure idée?

Répondre

0

Je connais ce problème, j'ai donc exporté tous mes enregistrements importants vers elasticsearch (NoSQL et très facile à installer). Suivant mis en œuvre une recherche floue. (incorporé)

{ 
"multi_match" : { 
    "fields" : ["product"], 
    "query" : "smasung smortphone", 
    "fuzziness" : "AUTO" 
} 
}