Solr: Quels sont les avantages de la normalisation de longueur/omitNorms=false?
nous utilisons Solr pour rechercher des articles de différentes longueurs. Nous indexons à la fois les métadonnées descriptives (titre, auteur, Catégorie, Mots clés, etc.) et le texte complet de l'article. Nous n'augmentons pas la pertinence au moment de l'index - tous les boosts sont faits au moment de la requête (nous utilisons dismax, couplé avec divers QF, pf, et boosts bf).
actuellement, notre champ fulltext utilise la norme omitNorms = false; et en conséquence, tous les autres égaux, articles plus courts (2-3 pouces de colonne articles) auront souvent plus élevé pertinence par rapport aux articles longs métrages (plusieurs pages).
dans notre cas, la longueur de l'article est un indicateur significatif de la pertinence, et donc je considère la possibilité de définir omitNorms=true sur notre champ fulltext.
Questions: 1. Pourquoi le comportement par défaut de lucene/solr augmente-t-il les longueurs de champ plus courtes par rapport aux longueurs plus élevées? Quel est le raisonnement? 2. Pourquoi ne voudrais-je pas omettre les ormes? Je n'ai pas besoin de stimuler les requêtes sur ce domaine particulier, ni d'utiliser tout type de facettage sur ce champ.
1 réponses
Question 1:
L'augmentation des longueurs de champ plus courtes par rapport aux longueurs de champ plus longues est liée à un concept fondamental de détermination de la pertinence des documents appelé TF-IDF (voir http://en.wikipedia.org/wiki/Tf%E2%80%93idf). À titre d'exemple, votre recherche a produit deux documents: le premier contient 100 mots et le second, 1 000 mots. Chacun contient votre mot clé de recherche juste une fois. Puisque le mot clé dans le premier document était 1% du texte, le document court est jugés plus pertinents pour votre recherche de documents longs, où le mot-clé recherché est de seulement 0,1% du texte.
Question 2:
il semble que selon vos exigences, vous pourriez vouloir essayer d'omettre des normes. Toutefois, cela pourrait fausser les résultats de votre recherche de façon inattendue. Il se peut que vous ayez bénéficié de certaines des propriétés agréables de la normalisation de la longueur et que vous ne l'ayez pas réalisé. Une autre approche pourrait être de stocker longueur du document comme une sorte de champ d'étiquette tel que l'étiquetage des documents comme "court", "moyen", et "long" et ensuite boost documents qui correspondent sur long ou long et moyen ou quoi que ce soit. Cela permettrait également à vos utilisateurs finaux de filtrer la longueur du document lorsqu'ils font une recherche.
encore une fois, quand je mentionne de belles propriétés de normalisation de longueur, vous pourriez penser à des cas où un article super long existe qui touche à 10 sujets différents, dont 1 correspond à la recherche de l'utilisateur ou un long article existe qui parle d'un seul sujet, Celui qui a été recherché. Dans ce cas, vous préféreriez probablement l'article long plutôt que l'article super long (même si l'article super long correspondait au mot-clé de recherche plus de fois). Tout dépend davantage de vos données et de vos cas d'utilisation.