2016-05-26 17 views
0

Ich erhalte falsches Ergebnis nach dem Ausführen dieser Abfrage:Volltextsuche mit mehreren Keywords

select 
    a.userid as userid, 
    b.CompanyProfile as cp, 
    MATCH (b.fldsearch) AGAINST ('+(computers computer) +(hardawre hardawres)' IN BOOLEAN MODE) as rank 
from users a , companymaster b 
where a.userid=b.userid and MATCH (b.fldsearch) 
AGAINST ('+(computers computer) +(hardawre hardawres)' IN BOOLEAN MODE) 

Ich brauche nur derjenigediejenigedasjenige Ergebnis, das eine beliebige Kombination von genannten Schlüsselwort enthalten bedeutet „Computer“, „Computer“ mit „hardawre“ „hardawres“

Und das Ergebnis, das ich entweder nur Computer oder Computer, aber nicht mit hardawre OR hardawres von oben Abfrage bin immer

+0

Willkommen bei Stack Overflow. Sie können den Quellcode mit der Werkzeugleiste [Code Sample '{}'] (http://i.stack.imgur.com/VYd26.png) formatieren - ich habe es diesmal für Sie erledigt. –

Antwort

0

Ihre Abfrage sieht gut aus, Ihr Problem hat höchstwahrscheinlich nichts damit zu tun, enthält. Dieses Problem tritt wahrscheinlich während Tests und innodb-tables auf.

Volltextindizes für innodb haben ein wenig unintuitives Verhalten. Nach der documentation

InnoDB Volltextindex Transaktion

InnoDB FULLTEXT- Indizes Handhabung hat spezielle Transaktionshandhabungseigenschaften aufgrund seines Caching und Batch-Verarbeitungsverhaltens. Insbesondere werden Aktualisierungen und Einfügungen in einem FULLTEXT-Index zur Transaktionsübergabezeit verarbeitet, was bedeutet, dass eine FULLTEXT-Suche nur festgeschriebene Daten anzeigen kann.

Also, wenn Sie arbeiten, z.B. Mit der Workbench müssen Sie nur Ihre commit; Ihre Daten (oder verwenden Sie einen Befehl mit einem Autocommit), nachdem Sie neue (Test-) Wörter hinzugefügt, um diese zu Ihrem Volltext-Index hinzuzufügen, damit Ihre Abfrage sie sehen kann.