Lucene: Quelle est la différence entre la requête et le filtre

requête Lucene vs filtre?

ils font tous les deux des choses similaires comme les filtres termquery par valeur de terme, filtre je suppose est là pour un but similaire.

quand utiliseriez-vous filter et when query?

Juste de commencer sur lucene aujourd'hui donc essayer de concept clair

25
demandé sur mamu 2010-09-15 23:18:01

3 réponses

filtre n'affecte pas le calcul de la note des documents non filtrés.

par exemple, imaginez les docs suivants:

1.
loc: "uk", "london"
text: "i live in london, "london is the best"

2.
loc: "london avenue", "london street", "london"
text: "I like the shop in london st."

maintenant, disons que vous faites la requête suivante:

q=+loc:"london" +text:"london"

dans cette requête le score de doc 2 est plus élevé que celui de doc 1 (parce que loc est calculé dans le document score)

à l'aide d'un filtre:

q=+text:"london" f=+loc:"london"

dans cette requête le score de doc 1 est plus élevé que celui de doc 2.

Excuse la Solr mise en forme de style mais dans l'ensemble la notion est claire.

les autres raisons d'utiliser les filtres sont pour la mise en cache, les filtres sont mis en cache séparément des requêtes donc si vous avez une requête dynamique avec une partie statique, il serait logique de filtrer par la partie statique. De cette façon, l'index transversal est limité au sous-ensemble de Doc filtrés.

18
répondu Asaf 2015-04-17 18:12:09

Query peut être transmis à un Searcher pour trouver des documents. Filter ne peut pas; il ne peut modifier les résultats produits par une Query.

implémentation d'un nouveau Query le type est assez compliqué, et nécessite une compréhension de la relation des internes de Lucène comme Weight,Scorer et Similarity. Filter la mise en oeuvre pourrait être assez simple et ne pas interagir avec le IndexReader à tous.

8
répondu erickson 2010-09-15 19:32:11

après avoir fermé une base de données, la sélection du filtre disparaît. Mais quand vous fermez une question, et l'Ouvrez à nouveau, il sera toujours là.

vous pouvez aussi créer une requête en utilisant un formulaire. Mais vous ne pouvez pas utiliser le filtre dans une forme.

0
répondu Pam 2012-02-08 16:45:54