Nous avions l'habitude d'avoir une recherche, qui vérifie deux colonnes pour quelques mots. Les deux colonnes doivent contenir des mots fournis, donc nous utilisons AND ... sans aucun doute FULLTEXT INDEX est utilisé sur les colonnes.Est-il possible d'utiliser CONTAINSTABLE pour rechercher "mot1" dans la colonne1 ET "mot2" dans la colonne2
La sélection est plus ou moins comme ceci:
SELECT
*
FROM SomeTable
WHERE (CONTAINS(Column1, 'word1 OR word2') AND CONTAINS(Column2, 'word3 OR word4'))
maintenant nous avons besoin d'ajouter le classement au résultat. Nous aimerions utiliser la fonctionnalité CONTAINSTABLE ... pour une seule colonne c'est simple. Quelque chose comme:
SELECT
SomeTable.*,
tmp.RANK
FROM SomeTable
INNER JOIN CONTAINSTABLE(SomeTable, Column1, 'word1 OR word2') as tmp
ON tmp.[KEY] = SomeTable.ID
Est-il possible de le faire avec 2 colonnes Mais considérez que je ne dois rechercher word1 ou mot2 à colonne1 (pas intéressé si nous avons word1 ou mot2 à colonne2). Considérons également ET qui était dans la clause where. Y at-il quelque chose comme:
SELECT
SomeTable.*,
tmp.RANK
FROM SomeTable
INNER JOIN CONTAINSTABLE(SomeTable, (Column1, Column2), 'column1:(word1 OR word2) AND column2:(word3 OR word4)') as tmp
ON tmp.[KEY] = SomeTable.ID
Je n'aime pas l'idée des jointures multiples et en utilisant cela, vous ne pouvez pas définir un sommet à CONTAINSTABLE (alors vous pourriez perdre les bons résultats). La somme de la valeur supérieure du classement dépend également du nombre de jointures. MAIS ... cela fonctionne, donc à moins qu'il y ait une meilleure réponse, je vais prendre celui-ci. – Dandikas