Frage

Ich wollte heute schon eine Frage stellen, als mir eine überraschende Funktionalität in Stackoverflow vorgestellt wurde.Als ich den Titel meiner Frage schrieb, schlug mir Stackoverflow mehrere verwandte Fragen vor und ich stellte fest, dass es bereits zwei ähnliche Fragen gab.Das war atemberaubend!

Dann begann ich darüber nachzudenken, wie ich eine solche Funktion implementieren würde.So würde ich Fragen nach Verwandtschaft ordnen:

  1. Frage, die eine höhere Anzahl von Wörtern aufweist, übereinstimmt mit der neuen Frage
  2. Wenn die Anzahl der Übereinstimmungen gleich ist, wird die Reihenfolge der Wörter berücksichtigt
  3. Wörter, die im Titel erscheint, hat eine höhere Relevanz

Das wäre ein einfacher Workflow oder ein komplexer Score-Algorithmus?Vielleicht etwas Stemmen, um die Erinnerung zu erhöhen?Gibt es eine Bibliothek, die diese Funktion implementiert?Welche weiteren Aspekte würden Sie in Betracht ziehen?Vielleicht könnte Jeff sich selbst antworten!Wie haben Sie das in Stackoverflow implementiert?:) :)

War es hilfreich?

Lösung

Eine Möglichkeit zur Implementierung eines solchen Algorithmus wäre die Einstufung der Fragen anhand einer heuristischen Funktion, die mithilfe der folgenden Schritte einen „Relevanz“-Gewichtungsfaktor zuweist:

  1. Wenden Sie einen Rauschfilter auf die Frage „Neu“ an, um Wörter zu entfernen, die in einer großen Anzahl von Objekten vorkommen, wie zum Beispiel:„das“, „und“, „oder“ usw.
  2. Ermitteln Sie die Anzahl der in der „Neuen“ Frage enthaltenen Wörter, die mit den Wörtern der bereits auf der Website veröffentlichten Fragengruppe übereinstimmen.[A]
  3. Ermitteln Sie die Anzahl der Tag-Übereinstimmungen zwischen den Wörtern in der „Neuen“ Frage und den verfügbaren.[B]
  4. Berechnen Sie die „Relevanzgewichtung“ basierend auf [A] und [B] als „x[A] + y[B]“, wobei x und y Gewichtsmultiplikatoren sind (Weisen Sie [B] einen höheren Gewichtsmultiplikator zu, da die Kennzeichnung relevanter ist als einfache Wortsuche)
  5. Holen Sie sich die Top-5-Fragen mit dem höchsten „Relevanzgewicht“.

Die Heuristik muss möglicherweise angepasst werden, um optimale Ergebnisse zu erzielen, aber sie sollte funktionieren.

Andere Tipps

Ihre Frage scheint ähnlich zu sein Dieses hier, das einige zusätzliche Antworten enthält.

@marcio

Leider ist mir kein direkter API-Verweis bekannt, den ich hier vorschlagen könnte, und ich habe noch nie mit Lucene gearbeitet.

Mir ist jedoch bekannt, dass Google Desktop eine Abfrage-API verwendet, um die relevanten Suchergebnisse zu bewerten und vorzuschlagen.Weitere Informationen zur API finden Sie hier Hier.

Vielleicht könnten sich andere einschalten und Sie anleiten.

Wird StackOverflow nicht irgendwann Open Source sein?Wenn ja, können Sie jederzeit herausfinden, wie sie es dort gemacht haben.

Aktualisieren:Es scheint, dass sie es sagen könnte Open Source es.Ich hoffe, dass sie es tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top