Récemment, je l'ai utilisé Sphinx largement, et depuis la mort de UltraSphinx, je commencé à utiliser le plugin grand Pat (Merci Pat, je vais vous acheter un café à Melbourne bientôt!)
I voir une solution possible basée sur votre idée originale, mais vous devez apporter des modifications aux données à "l'heure de l'index" pas à "l'heure d'exécution".
Essayez ceci:
Modifier votre Sphinx requête SQL pour remplacer "Blue" avec "Bleu Bleu Bleu Bleu", "récente" avec "Récent récent" et "Fun" avec « Fun Amusement". Cela va amplifier toutes les occurrences de vos mots-clés spéciaux.
par exemple. SELECT REPLACE (my_text_col, "bleu", "bleu bleu bleu") comme my_text_col ...
Vous souhaitez probablement les faire tous en même temps, imbriquez simplement les appels de remplacement.
par exemple. SELECT REPLACE (REMPLACER (my_text_col, "fun", "fun fun"), "bleu bleu bleu" "bleu") comme my_text_col ...
Ensuite, changer le mode de classement à SPH_RANK_WORDCOUNT. De cette façon, la pertinence maximale est donnée à la fréquence des mots-clés. (Facultatif) Imaginez que vous ayez une liste de mots-clés en rapport avec vos mots-clés spéciaux . Par exemple "bleu pâle" se rapporte à "bleu" et "agréable" se rapporte à "amusant". Lors de l'exécution, réécrivez le texte de la requête pour rechercher le mot cible à la place. Vous pouvez stocker ces mots facilement dans un hachage, puis passer en boucle pour faire les remplacements.
# Add trigger words as the key,
# and the related special keyword as the value
trigger_words = {}
trigger_words['pale blue'] = 'blue'
trigger_words['pleasant'] = 'fun'
# Now loop through each query term and see if it should be replaced
new_query = ""
query.split.each do |word|
word = trigger_words[word] if trigger_words.has_key?(word)
new_query = new_query + ' ' word
end
Maintenant vous avez quasi mot-clé cluster aussi. Sphinx est vraiment une technologie fantastique, profitez-en!
N'aurais-je pas toujours le même problème? dans ce cas, les mots-clés auraient plus de poids que, disons, le champ de titre. Mais ce que je suis en train de faire, c'est de rendre le mot clé plus important que le mot clé dans la requête. –