MySQL Boolean Частичный поиск - PullRequest
       15

MySQL Boolean Частичный поиск

0 голосов
/ 21 сентября 2011

Я много искал, и раньше у меня было что-то похожее, но я не могу понять, почему это не дает ожидаемых результатов.

Скажем, у меня есть 'test6' в имени, производитель, модель или описание, я хочу найти 'tes', но, используя приведенный ниже запрос, он не вернется, как я ожидал.

Я также пробовал "test" с "AGAINST (" test ")+ В БУЛЕВОМ РЕЖИМЕ и т. Д. Любая помощь будет оценена, спасибо.

ALTER TABLE productinfo ADD FULLTEXT(name, manufacturer, model, description);

SELECT id, name,category_id, price, manufacturer, model, shortdescription, 
       description,stockqty,shippingbase,shippingcost, buyitnow,auctionitem, 
       MATCH (name, manufacturer, model, description) 
       AGAINST('tes'* IN BOOLEAN MODE) as  score 
FROM productinfo 
     WHERE MATCH (name, manufacturer, model, description) 
        AGAINST('tes'* IN BOOLEAN MODE) ORDER BY score DESC

Решено, Примечание: после некоторых исследований это была звездочка, которая должна была стоять после поискового запроса (в данном случае 'tes')так ПРОТИВ ('tes' * В БУЛЕВОМ РЕЖИМЕ);

1 Ответ

0 голосов
/ 21 сентября 2011

Есть две проблемы, с которыми вы столкнулись в этом запросе.

  1. Для полнотекстового поиска требуется минимальная длина слова 4 ( см. Руководство )
  2. Полнотекстовый поиск ищет только целые слова.Чтобы сопоставить частичное слово, вам нужно поставить звездочку внутри кавычек AGAINST('test*' IN BOOLEAN MODE), или вы можете использовать регулярное выражение или locate()
...