Mysql полнотекстовый поиск с логическими операторами - PullRequest
0 голосов
/ 29 июня 2010

Я пытаюсь найти значения с помощью OR и AND

вот пример для ИЛИ

SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 | 1)' IN BOOLEAN MODE);

Это работает, но если бы я хотел сделать И

SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 & 1)' IN BOOLEAN MODE);

Это попытается найти контакты с 10 и 1 в одной строке, но я хочу найти контакты с 10 и 1 в качестве item_id, но в нескольких строках

например

contact_id    item_id
    1             1
    1             10
    2             10

Поиск AND вернет contact_id - 1

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

Спасибо, Тим

1 Ответ

1 голос
/ 29 июня 2010

Прежде всего, вы неправильно используете операторы полнотекстового поиска AND и OR.| и & зарезервированы для будущего использования ;используйте + или -, как указано в документации .

Другой аспект, который, как мне кажется, не понятен из вашего примера, заключается в том, почему вы используете поиск fulltext, если выиспользуя целые числа.Достаточно простого WHERE item_id IN (1, 10).

Однако, если вам нужен поиск fulltext, я бы рекомендовал использовать Sphinx .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...