Ich versuche, die folgende LIKE Abfrage mit einer Volltextsuche auf JSON
Daten zu replizieren;MySQL Volltextsuche auf JSON-Daten
SELECT * FROM table
WHERE response LIKE '%"prod_id": "foo"%'
AND response LIKE '%"start_date": "2016-07-13"%'
In meiner Datenbank die obige Abfrage gibt 28 Zeilen
Dies ist mein Versuch:
SELECT * FROM table
WHERE MATCH(response)
AGAINST('+"\"prod_id\": \"foo\"",+"\"start_date\": \"2016-07-13\""')
Doch diese gibt mehr als 4.500 Zeilen (das gleiche wie die erste Abfrage ausgeführt werden nur für die prod_id ~ 1.900 Zeilen, wenn die erste Abfrage nur auf das Datum ausgeführt wird)
Es war mein Verständnis, dass +"text here"
würde ein erforderliches Wort anzeigen, und das literale doppelte Anführungszeichen (vorhanden in den JSON
Daten) sollte maskiert werden, und das ,
würde eine Trennung zwischen den zwei Zeichenfolgen anzeigen, die ich suche. Was verstehe ich nicht richtig? Ist es sinnvoll, dies als Volltextabfrage auszuführen?
fand ich denke, dass Sie die [IN BOOLEAN MODE] hinzuzufügen vergessen (https://dev.mysql.com/doc/refman /5.5/de/fulltext-boolean.html) Modifikator, um diese booleschen Operatoren zu aktivieren. Der Standardmodifikator ist [IN NATURAL LANGUAGE MODE] (http://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html), der nicht Ihren Anforderungen entspricht. – Sevle
Dank @Sevle, das war sicherlich das halbe Problem - der Rest meiner erforderlichen Verbesserungen sind unten. – Novocaine