web-dev-qa-db-fra.com

Requête de filtre SOLR vs requête principale

SOLR docs , précisez que filtre les requêtes , contrairement à la requête principale , n'influence pas le score du document. Quelqu'un peut-il expliquer ce que cela signifie exactement, de préférence avec un exemple.

Merci.

51
mrd3650

Une FilterQuery stocke UNIQUEMENT les ID de document. Cela rend très rapide l'application du filtre pour inclure/exclure des documents. De bons exemples en sont le filtrage des produits de la recherche en fonction du pays, du type de produit, de la disponibilité, etc.

Une requête normale peut exécuter exactement la même fonction, mais elle dispose d'un système de notation très complexe pour déterminer la "pertinence". Je crois que la documentation indique que la notation n'est effectuée que sur la requête principale, pas sur la requête de filtre. Cela devrait également augmenter la vitesse des requêtes.

Je peux donc demander:

description:Kohler AND productType:Toilet

Ou je peux demander:

description:Kohler
with a FQ of productType:Toilet

Les résultats seraient les mêmes, mais les scores seraient différents. De plus, si vous obtenez de nombreuses requêtes différentes tout au long de la journée qui concernent productType:Toilet, la FilterQuery serait mise en cache, ce qui rend le temps de requête global plus rapide.

55
rfeak

fq est destiné à une liste fixe de valeurs. Si vous recherchez q = toit ouvrant + stéréo et fq = Mustang solr fera une analyse de texte sur le paramètre q puisque q = toit ouvrant + stéréo et q = stéréo + toit ouvrant renverra le même jeu de résultats. Mais lors du filtrage de la recherche via fq, aucune analyse n'est appliquée au paramètre fq et il est supposé que tous les documents retournés correspondront au fq, il n'est donc pas nécessaire qu'il modifie le score des documents qui correspondent.

4
d whelan