2016-04-08 12 views
1

Ich führe eine MySQL-Abfrage durch, um einen DB von Jobs zu suchen. Ich verwende MATCH und AGAINST, um Ergebnisse als relevant einzustufen. Ich bin verwirrt jedoch, warum diese zwei Abfragen unterschiedliche Ergebnisse:Warum geben diese 2 MySQL-Abfragen unterschiedliche Ergebnisse zurück?

SELECT SQL_CALC_FOUND_ROWS *, MATCH (`title`) 
      AGAINST ("assistant") 
      AS Relevance 
      FROM jobs2 
      WHERE MATCH (`title`) 
      AGAINST ("assistant") AND date >= CURDATE() - INTERVAL 28 DAY GROUP BY jobref ORDER BY Relevance DESC LIMIT 0,50 

, die wie ich auf natürliche Sprachmodus wird standardmäßig verstehen, aber gibt 0 Ergebnisse, während:

SELECT SQL_CALC_FOUND_ROWS *, MATCH (`title`) 
      AGAINST ("assistant" IN BOOLEAN MODE) 
      AS Relevance 
      FROM jobs2 
      WHERE MATCH (`title`) 
      AGAINST ("assistant" IN BOOLEAN MODE) AND date >= CURDATE() - INTERVAL 28 DAY GROUP BY jobref ORDER BY Relevance DESC LIMIT 0,50 

kehrt 4 Ergebnisse wie erwartet, aber die Relevanz ist immer 1, so dass eine Sortierung nach Relevanz eigentlich nicht möglich ist?

meine DB hat diese Arbeitsplätze für die Prüfung:

|date    |title               |jobref| 

|2016-04-08 07:21:19|Assistant Management Accountant        |12345 | 
|2016-04-08 07:21:19|Assistant Accountant           |12346 | 
|2016-04-08 07:19:15|Assistant Finance Manager          |12347 | 
|2016-04-08 07:20:38|Accounts Assistant/Purchase Ledger Clerk/Accounts Payable |12348 | 

Grundsätzlich warum Modus für natürliche Sprache Rückkehr 0 Ergebnisse?

Antwort

4

Von der MySQL-Dokumentation für die Suche in natürlicher Sprache:

Außerdem Worte, die in 50% oder mehr der Reihen vorhanden sind, sind gemeinsam betrachtet und stimmen nicht überein.

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

Es sieht aus wie Ihre Datenprobe, dass 50% Trefferquote übersteigt.

+0

ah danke - ich nehme an, dass es keinen Weg gibt, um das herum? – rpsep2

Verwandte Themen