sql >> Database >  >> RDS >> Mysql

Hoe bouw je een 'gerelateerde vragen' engine?

Als je zoiets zelf helemaal opnieuw zou willen bouwen, zou je iets gebruiken dat TF/IDF heet:Term Frequency / Inverse document frequency. Dat betekent, om het enorm te vereenvoudigen, je zoekt woorden in de zoekopdracht die ongebruikelijk zijn in het corpus als geheel en vindt documenten die die woorden bevatten.

Met andere woorden, als iemand een zoekopdracht invoert met de woorden "Ik wil een olifant kopen", dan is van de woorden in de zoekopdracht het woord "olifant" waarschijnlijk het minst voorkomende woord in uw corpus. "Kopen" is waarschijnlijk de volgende. Dus u rangschikt documenten (in uw geval eerdere zoekopdrachten) op hoeveel ze het woord "olifant" bevatten en vervolgens hoeveel ze het woord "kopen" bevatten. De woorden "ik", "aan" en "een" staan ​​waarschijnlijk in een stoplijst, dus u negeert ze helemaal. U rangschikt elk document (vorige zoekopdracht, in uw geval) op hoeveel overeenkomende woorden er zijn (weging volgens inverse documentfrequentie -- d.w.z. hoog gewicht voor ongebruikelijke woorden) en toont de top paar.

Ik heb het te simpel gemaakt, en je zou hier meer over moeten lezen om het goed te krijgen, maar het is echt niet erg ingewikkeld om op een eenvoudige manier te implementeren. De Wikipedia-pagina is misschien een goede plek om te beginnen:

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



  1. Beginnummer van bestelling wijzigen in Magento

  2. MySQL DELETE FROM met UNION-subquery op IN-voorwaarde

  3. Voer productanalyses uit met behulp van SQL Server Full-Text Search. Deel 1

  4. mysql_query retourneert alleen stringtype voor int/fload db-type