Lucene: Wie kann ich ein bestimmtes Feld verstärken?

8

In meinem Fall haben Dokumente zwei Felder, z. B. "Titel" und "Ansichten". "Ansichten" ist die Anzahl der Besuche in diesem Dokument. wie: "titel": "iphone", "ansichten": "10". Ich muss eine Strategie entwickeln, die den Ansichten einige Gewichtungen zuweist, so wie der Relevanz-Score nach Score (Titel) * 0,8 + Score (Views) * 0,2 berechnet wird. Kann Lucene das? Und ich möchte wissen, ob es einige Algorithmen zu dieser Frage gibt.

    
remy 22.03.2012, 19:27
quelle

2 Antworten

10

So können Sie das tun:

%Vor%

Der Score ist proportional zu 0.8*score(titleQuery) + 0.2*score(viewsQuery) (zu einer multiplikativen Konstante).

Um Ihr views -Feld zu nutzen, müssen Sie wahrscheinlich ein ValueSourceQuery .

    
jpountz 23.03.2012, 10:05
quelle
5

Sie können auf 3 Arten steigern. Je nach Ihren Anforderungen möchten Sie vielleicht eine Kombination verwenden

  

Erhöhung der Dokumentebene - während der Indizierung - durch Aufruf   document.setBoost (), bevor ein Dokument zum Index hinzugefügt wird.

     

Die Feldstufe des Dokuments erhöht sich - während der Indizierung - durch Aufruf   field.setBoost () vor dem Hinzufügen eines Feldes zum Dokument (und vor   Hinzufügen des Dokuments zum Index).

     

Erhöhung der Abfrageebene - während   Suche, indem ein Boost auf eine Abfrageklausel gesetzt wird   Query.setBoost ().

Quelle: Ссылка

    
Mikos 22.03.2012 21:37
quelle

Tags und Links