Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie baut man eine Suchmaschine für verwandte Fragen?

Wenn Sie so etwas von Grund auf selbst erstellen möchten, verwenden Sie etwas namens TF/IDF:Term Frequency / Inverse document frequency. Das heißt, um es enorm zu vereinfachen, Sie finden Wörter in der Abfrage, die im gesamten Korpus ungewöhnlich sind, und finden Dokumente, die diese Wörter enthalten.

Mit anderen Worten, wenn jemand eine Suchanfrage mit den Worten „Ich möchte einen Elefanten kaufen“ eingibt, dann ist das Wort „Elefant“ wahrscheinlich das am wenigsten verbreitete Wort in Ihrem Korpus. "Kaufen" kommt wahrscheinlich als nächstes. Sie ordnen also Dokumente (in Ihrem Fall frühere Abfragen) danach, wie viel sie das Wort "Elefant" enthalten, und dann, wie viel sie das Wort "Kaufen" enthalten. Die Wörter "I", "to" und "an" stehen wahrscheinlich in einer Stoppliste, also ignorieren Sie sie insgesamt. Sie ordnen jedes Dokument (in Ihrem Fall die vorherige Abfrage) danach, wie viele übereinstimmende Wörter vorhanden sind (Gewichtung gemäß umgekehrter Dokumenthäufigkeit – d. h. hohes Gewicht für ungewöhnliche Wörter) und zeigen die obersten paar.

Ich habe zu stark vereinfacht, und Sie müssten sich darüber informieren, um es richtig zu machen, aber es ist wirklich nicht sehr kompliziert, es auf einfache Weise zu implementieren. Die Wikipedia-Seite könnte ein guter Ausgangspunkt sein:

http://en.wikipedia.org/wiki/Tf%E2%80 %93idf