FULLTEXT Query Expansion

Een laatste onderwerp dat ik in deze tutorial wil bespreken zijn full-text zoekopdrachten die gebruik maken van Query Expansion (vertaald: query uitbreiding).

Deze methode is over het algemeen handig als een zoekstring te kort is doordat de gebruiker niet precies weet waar hij op moet zoeken (bijv. de 'Ik doe een gok' optie van Google). Stel dat een gebruiker bijvoorbeeld zoekt op 'database' kan hij best wel eens 'MySQL', 'PostgreSQL' of 'Oracle' bedoelen. In dat geval zouden artikelen waarin deze trefwoorden voorkomen ook als gevonden resultaat terug gegeven moeten worden.

Door de WITH QUERY EXPANSION modifier aan de zoekopdracht mee te geven, kunnen we dit waarschijnlijk deels voor elkaar krijgen. Dit principe werkt namelijk door de zoekopdracht twee keer uit te voeren waarbij de zoekstring voor de tweede opdracht uitgebreid wordt met woorden uit de meest relevante resultaten uit de eerste opdracht.

Stel dus dat we zoeken naar 'database' en in de gevonden resultaten komt 'MySQL' veelvuldig voor. De tweede zoekopdracht zal dan ook rijen vinden waarin 'MySQL' voorkomt ook al bevatten deze rijen het woord 'database' niet.

Ik zal dit hele verhaal maar eens verduidelijken met een tweetal voorbeelden. Allereerst maar eens een normale zoekopdracht:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT *
FROM artikelen
WHERE MATCH(inhoud) AGAINST('database')

Het resultaat van deze query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
+----+-------------------+------------------------------------------+
| id | titel             | inhoud                                   |
+----+-------------------+------------------------------------------+
|  5 | MySQL vs. YourSQL | In de volgende database vergelijking ... |
|  1 | MySQL Tutorial    | DBMS staat voor DataBase ...             |
+----+-------------------+------------------------------------------+

Als we nu het Query Expansion principe toepassen ziet de query er als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT *
FROM artikelen
WHERE MATCH(inhoud) AGAINST('database' WITH QUERY EXPANSION)

En het resultaat wordt dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
+----+-------------------------------------+------------------------------------------+
| id | titel                               | inhoud                                   |
+----+-------------------------------------+------------------------------------------+
|  1 | MySQL Tutorial                      | DBMS staat voor DataBase ...             |
|  5 | MySQL vs. YourSQL                   | In de volgende database vergelijking ... |
|  2 | MySQL op een goede manier gebruiken | Nadat je de volgende stappen ...         |
+----+-------------------------------------+------------------------------------------+

We zien dat er nu een extra rij gevonden is. Als je de resultaten gaat vergelijken zie je dat er nu twee records gevonden zijn met 'volgende' erin terwijl dat er eerst maar 1 was. Blijkbaar is het woord 'volgende' dus door MySQL als zeer relevant woord beoordeeld en gebruikt in de tweede zoekopdracht.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Zoeken in een MySQL database
  3. Werking van de FULLTEXT index
  4. Relevantie bij een FULLTEXT zoekopdracht.
  5. Boolean FULLTEXT zoekopdrachten
  6. FULLTEXT Query Expansion
  7. Slotwoord en referenties

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.