sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bygger man en 'relaterede spørgsmål'-motor?

Hvis du ville bygge noget som dette selv fra bunden, ville du bruge noget, der hedder TF/IDF:Term Frequency / Inverse document frekvens. Det betyder, for at forenkle det enormt, at du finder ord i forespørgslen, der er usædvanlige i korpuset som helhed, og finder dokumenter, der har disse ord.

Med andre ord, hvis nogen indtaster en forespørgsel med ordene "Jeg vil købe en elefant" i, så er ordet "elefant" sandsynligvis det mindst almindelige ord i dit korpus af ordene i forespørgslen. "Køb" er nok det næste. Så du rangerer dokumenter (i dit tilfælde tidligere forespørgsler) efter, hvor meget de indeholder ordet "elefant", og hvor meget de indeholder ordet "køb". Ordene "jeg", "til" og "en" er sandsynligvis på en stopliste, så du ignorerer dem helt. Du rangerer hvert dokument (foregående forespørgsel, i dit tilfælde) efter hvor mange matchende ord der er (vægtning i henhold til omvendt dokumentfrekvens -- dvs. høj vægt for ualmindelige ord) og viser de øverste få.

Jeg har oversimplificeret, og du skulle læse op på dette for at få det rigtigt, men det er virkelig ikke voldsomt kompliceret at implementere på en enkel måde. Wikipedia-siden kan være et godt sted at starte:

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



  1. ORACLE - ORA-01843:ikke en gyldig måned

  2. Hvad er det egentlig en BLOB i en DBMS sammenhæng

  3. Fremskynder indekser mere end> sammenligning i MySQL?

  4. Sådan bruger du $_GET til at få flere parametre med samme navn i PHP