2016-10-23 1 views
1

Je vais avoir un index sphinx pour rechercher les utilisateurs par leur nom. J'utilise la morphologie soundex pour montrer des résultats plus pertinents pour le chercheur de cas ne sait pas exactement comment le nom épelle. Tenir compte le tableau suivant:Configurer le sphinx pour classer exactement la correspondance exacte avec la morphologie activée

+----+--------------------+ 
| id |  name  | 
+----+--------------------+ 
| 1 | Maciej Makuszewski | 
| 2 | Dane Massey  | 
| 3 | Lionel Messi  | 
| 4 | Mr. No Matches  | 
+----+--------------------+ 

Avec soundex permis sphynx suggère 1, 2, 3 lignes comme résultat pertinent pour la requête messi. Quoi qu'il en soit, j'aimerais montrer la correspondance exacte en premier. Je veux dire que si l'utilisateur tape messi il veut voir Lionel Messi le premier avec une grande probabilité.

Mon problème est que je ne sais pas comment faire cela. J'ai essayé de mettre différents classeurs mais ça ne donne rien.

J'ai essayé aussi d'ajouter

index_exact_words = 1 

à l'index, mais il ne donne rien. J'utilise l'API sphinx avec le module node.js sphinxapi si c'est important.

Quelle est la manière habituelle de résoudre ce problème?

Répondre

2

Vous voulez, index_exact_words, mais devrait également ajouter expand_keywords

Cela entraînera sphynx à la recherche de la logique floue (via la morphologie) et le mot exact (via index_exact_words) automatiquement. Donc, une correspondance exacte, correspond à la fois, et se classe plus haut.

peut faire la même chose manuellement en recherchant par exemple

messi | =messi

(qui est similaire à ce que expand_keywords interne ne)

+1

Il fonctionne. Merci –

+0

@GlenSwift, veuillez utiliser cette solution et résoudre le ticket. (c) Scrum-maître personnel de Glen –