2016-04-15 8 views
1

Ich brauche Produkte zu suchen und sie nach Relevanz sortiert werden, denn das habe ich versucht, diese MySQL-AbfrageMySQL Volltextsuche nach Relevanz mit Wildcard

SELECT *, MATCH(`SubProductName`) AGAINST ('+app*' IN BOOLEAN MODE) AS 
relevance FROM `tblsubproducts1` WHERE MATCH(SubProductName) AGAINST 
('+app*' IN BOOLEAN MODE) ORDER BY relevance DESC 

Diese Abfrage zum Beispiel gibt: Apple Thunderbolt, Apple TV ... als Ergebnisse. was ist richtig.

Aber wenn ich mit '+usb*' versuchen es keine Zeilen zurückgibt, während die Datenbank eine Zeile mit SubProductNameUSB-C Charge Cable enthält, die ich durch Abgleich gegen '+cable*'

Zur Klärung finden, möchte ich die Suche mit teilweise arbeiten Wörter wie "App" für Apple, weshalb ich * hinzugefügt habe, aber warum es nicht immer scheint zu arbeiten ist, was mich hier verwirrt. Ist es die - in USB-C oder ...?

Antwort

1

Wenn Sie MyISAM verwenden, dann die minimale Wortlänge für die Volltextindizierung ist 4. (Diese here dokumentiert.)

Mit anderen Worten, „usb“ ist nicht einmal im Index. Sie müssen diesen Parameter ändern und den Index neu erstellen.

+0

das ist egal, was die Suchzeichenfolge richtig ist? es zählt nur mit dem Index? – vlatkozelka

+0

mit anderen Worten, da es mit "App" für Apple funktioniert, ist das Problem, dass "USB" nicht indiziert ist, nicht, dass die Suchzeichenfolge usb ist? – vlatkozelka

+0

@vlatkozelka. . . Es entspricht nicht "USB-C", da Bindestrich als Trennzeichen für Wörter verwendet wird. –