2010-07-28 4 views
0

dans le match - contre obtenir les bons résultats, il n'y a pas de problème, mais la chose que je veux, c'est la combinaison de résultats.mysql recherche top match devrait venir en premier

Comme pour ordinateur « infographie » je suis d'obtenir des résultats pour les résultats « + ordinateur + graphiques » comme « ordinateur » seuls les résultats et « infographie » et les résultats « graphiques » et etc.

Ici je veux » graphiques "résultats d'abord, puis l'autre résultat de match de mot unique. Comment puis-je apporter ces premiers. Aidez-moi quelqu'un s'il vous plaît

+0

Je pense que quelques exemples de données et des recherches typiques avec des résultats attendus aideraient. Je ne suis pas vraiment clair sur ce que vous demandez. – spinon

+0

entrées dans le tableau Qu'est-ce qu'un ordinateur? Qu'est-ce que les graphiques sur l'ordinateur? Qu'est-ce que l'infographie? Qu'est-ce qu'un graphique?Select *, MATCH ('...') AGAINST ('...') comme résultat de $ table où MATCH (field1, field2) CONTRE ("+ computer + graphics" EN MODE BOOLEAN) ORDRE BY results ASC IL RETOURNE des résultats exacts où certains sont au milieu et d'autres en premier. Comme qu'est-ce qu'un ordinateur? Qu'est-ce que les graphiques sur l'ordinateur? Qu'est-ce que l'infographie? Qu'est-ce qu'un graphique? – Elamurugan

Répondre

1

vous devez trier par pertinence: recherchez la même requête que vous utilisez dans O WH, appelez est PERTINENCE et ensuite commandez par ce champ.

SELECT MATCH ('... ') contre (' ... ') que la pertinence FROM table WHERE MATCH (' ... ') CONTRE (' ...' EN BOOLEAN) ORDER BY Pertinence DESC

1

Cela ne peut pas être fait dans la recherche de texte intégral MySQL sans un peu de saut de cercle.

Vous devez essentiellement lancer la recherche deux fois pour obtenir les résultats souhaités. Tout d'abord, exécutez un boolean fulltext search en utilisant des guillemets doubles pour entourer la phrase exacte recherchée. Les guillemets en mode booléen renverront les correspondances exactes seulement. Une fois que vous avez ces résultats, alors your normal natural-language search. C'est la recherche normale en langage naturel qui vous pose problème avec des correspondances partielles. Vous devez combiner manuellement les deux résultats de recherche. Alors que MySQL fulltext est décent pour des besoins de recherche simples, ce n'est pas une excellente solution de recherche. Considérez quelque chose avec plus de puissance, comme Sphinx, Solr/Lucene, ou même quelque chose comme ElasticSearch.

1

en supposant que nous parlons d'un index de texte intégral:

... ORDER BY MATCH('computer graphics') AGAINST (some,columns) DESC; 
0

entrées dans le tableau

ce qui est l'ordinateur? Qu'est-ce que les graphiques sur l'ordinateur? Qu'est-ce que l'infographie? Qu'est-ce qu'un graphique? QUERY: sélectionnez *, MATCH (field1, field2) CONTRE ("+ computer + graphics" EN MODE BOOLEAN) comme résultat de $ table où MATCH (field1, field2) CONTRE ("+ computer + graphics" EN MODE BOOLEAN) ORDER BY résultats ASC

IT renvoie des résultats exacts quelque part au milieu et d'autres en premier.

Comme Qu'est-ce que l'infographie? Qu'est-ce que les graphiques sur l'ordinateur? qu'est-ce qu'un ordinateur? Qu'est-ce qu'un graphique?

Comment il peut être corrigé ....