mysql полнотекстовое объединение слов - PullRequest
0 голосов
/ 23 января 2012

У меня вопрос с полным текстом.Ссылка на: http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html

SELECT * FROM table WHERE (MATCH (aindex,bindex) AGAINST ('(+apple +juice)' IN BOOLEAN MODE))

Это возвращает 14 пунктов

SELECT * FROM table WHERE (MATCH (aindex,bindex) AGAINST ('(+apple +pie)' IN BOOLEAN MODE))

Это возвращает 36 пунктов

SELECT * FROM table WHERE (MATCH (aindex,bindex) AGAINST ('(+apple +pie)|(+apple +juice)' IN BOOLEAN MODE))

Это возвращает 1910 пунктов, очевидно, мой запросесть проблема.Как искать слова точно содержит (+apple +pie) и (+apple +juice)?Я думаю, что это должно быть возвращено 14+36=50items

И для моей цели мне нужен поиск объединения для

(+apple +pie) (+apple +juice) (+apple +macintosh) (+apple +turnover) (+apple +strudel) (+pear +pie) (+pear +juice) (+pear +macintosh) (+pear +turnover) (+pear +strudel)

, это должно вернуть почти 520 предметов.Спасибо.

1 Ответ

2 голосов
/ 23 января 2012

Это должно быть то, что вы хотите:

SELECT 
  * 
FROM 
  table 
WHERE 
  (MATCH (aindex,bindex) AGAINST ('+apple +(pie juice)' IN BOOLEAN MODE))

ETA: Пропущены груши, которые я прочитал в первый раз.Чтобы получить все те, которые вы перечислили, я думаю это должно сработать:

SELECT 
  * 
FROM 
  table 
WHERE 
  (MATCH (aindex,bindex) AGAINST ('+((apple +(pie juice macintosh turnover strudel)) (pear +(pie juice macintosh turnover strudel)))' IN BOOLEAN MODE));

Это должно означать "должен содержать яблоко и один из пирога, сока, макинтоша, оборота или штруделя ИЛИгруша и пирог, сок, макинтош, товарооборот или штрудель.

Если это не сработает, я бы сделал это:

SELECT 
  * 
FROM 
  table 
WHERE 
  (MATCH (aindex,bindex) AGAINST ('+apple +(pie juice macintosh turnover strudel)' IN BOOLEAN MODE))
UNION
SELECT 
  * 
FROM 
  table 
WHERE 
  (MATCH (aindex,bindex) AGAINST ('+pear +(pie juice macintosh turnover strudel)' IN BOOLEAN MODE));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...