2017-09-08 3 views
0

Ich verwende SOLR, um die Dokumente zu speichern, die bei der Suche in meiner Anwendung verwendet werden. Der SOLR wird von mehreren Anwendungen gemeinsam genutzt und die Daten werden basierend auf der Anwendungs-ID gruppiert, die für jede Anwendung einzigartig ist.SOLR IDF Max. Dok. Konfiguration

Für die Berechnung der Punktzahl basierend auf TF-IDF verwendet das SOLR die gesamten darin verfügbaren Dokumente. Wie ändere ich diese Konfiguration, um die IDF nur anhand der gesamten für die Anwendungs-ID verfügbaren Dokumente zu überprüfen, anstatt alle Dokumente über Anwendungen hinweg zu zählen.

Antwort

1

Wenn Sie sie in einer Sammlung speichern, befürchte ich, dass es mit eingebauter Funktionalität nicht möglich ist.

Ich denke, Sie haben mehrere Möglichkeiten - speichern Sie jede Anwendung Daten in der separaten Sammlung, als Sie IDF nur basierend auf bestimmten Anwendungsdaten out of the Box haben.

Wenn dies nicht für Sie geeignet ist - Sie müssen Ihre eigene Ähnlichkeit schreiben, wahrscheinlich von https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html und zwingender Methode public abstract float idf(long docFreq, long docCount) exteding, die für die Berechnung der IDF

Insgesamt verantwortlich ist, glaube ich, der erste Ansatz, um Ihre Bedürfnisse anzupassen viel besser.

2

Auch wenn Sie alle Dokumente in einer Sammlung speichern, gibt es immer noch etwas, was Sie tun können!

Es sei denn, Sie ExactStatsCache in Ihrem solrconfig.xml wie folgt aktivieren:

<statsCache class="org.apache.solr.search.stats.ExactStatsCache"/> 

Ähnlichkeitsberechnungen sind pro Shard, nicht pro Gesamt Sammlung.

Also, wenn Sie Ihre Dokumente durch Ihre Application_id shard, dann erhalten Sie "bessere" Noten, näher an dem, was Sie wollen. Es wird genau das sein, was Sie wollen , wenn Sie eine Application_id pro Shard erhalten, aber wenn Sie viele Anwendungen und nicht viele Shards haben, erhalten Sie mehr als eine App pro Shard.