sql >> Database >  >> RDS >> Mysql

Zoekrelevantie in volledige tekst wordt gemeten in?

De basisgegevensstructuur voor een tekstophaalsysteem is een Inverted Index . Dit is in wezen een lijst met woorden die in de documentenverzameling worden gevonden met een lijst van de documenten waarin ze voorkomen. Het kan ook metadata bevatten over het voorkomen van elk document, zoals het aantal keren dat het woord voorkomt.

Documenten die de woorden bevatten, kunnen worden opgevraagd door te matchen op de zoektermen. Om de relevantie te bepalen, wordt een heuristiek gebruikt die bekend staat als een Cosinusrangschikking wordt berekend op de hits. Dit werkt door een n-dimensionale vector te construeren met één component voor elk van de n zoektermen. U kunt desgewenst ook de zoektermen wegen. Deze vector geeft een punt in de n-dimensionale ruimte dat overeenkomt met uw zoektermen.

Een vergelijkbare vector op basis van de gewogen voorkomens in elk document kan worden geconstrueerd uit de geïnverteerde index, waarbij elke as in de vector overeenkomt met de as voor elke zoekterm. Als je een puntproduct van deze vectoren berekent, krijg je de cosinus van de hoek ertussen. 1.0 is gelijk aan cos (0), wat zou aannemen dat de vectoren een gemeenschappelijke lijn vanaf de oorsprong innemen. Hoe dichter de vectoren bij elkaar liggen, hoe kleiner de hoek en hoe dichter de cosinus bij 1,0 ligt.

Als u de zoekresultaten sorteert op cosinus (of ze in een prioriteitswachtrij stopt als mg doet) krijg je het meest relevant. Slimmere relevantie-algoritmen hebben de neiging om te knoeien met de gewichten van de zoektermen, waardoor het puntproduct scheef wordt getrokken ten gunste van termen met een hoge relevantie.

Als je een beetje wilt graven, Gigabytes beheren door Bell en Moffet bespreekt de interne architectuur van tekstophaalsystemen.



  1. MySQL-gebruikersbeheer

  2. Hoe kan ik stemmen per dag per IP beperken in Php+Mysql-stemmen?

  3. Databasestructuur/ontwerp

  4. MySQL:een grote tafel opsplitsen in partities of aparte tabellen?