FULLTEXT поиск с несколькими точными фразами и исключениями - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь создать полнотекстовый запрос, который соответствует ЛЮБОМУ из нескольких точных фраз и исключая другие. В моем тестовом запросе. Я хочу выбрать любую запись, в которой есть (или оба) точная фраза «коричневая корова» ИЛИ «зеленая кошка», а НЕ «серебряный носорог». Я настроил тестовые записи с комбинациями этих трех фраз и должен вернуть 3 записи, если я могу правильно сформулировать свой запрос.

Запрос 1 SELECT * FROM jos_sea_messages WHERE ((Match (body, subject) Against ('") + зеленая кошка "'В БУЛЕВОМ РЕЖИМЕ) ИЛИ Совпадение (тело, предмет) против (" + "коричневая корова"' В БУЛЬШЕНСКОМ РЕЖИМЕ)) И (Совпадение (тело, субъект) против ('"- серебряный носорог"' В БУЛЕВОМ РЕЖИМЕ )))

Возвращает 2 записи - одна из них с 'серебряным носорогом', поэтому не то, что я хочу

Запрос 2 SELECT * FROM jos_sea_messages WHERE ((Match (body, subject) Against ( '"+ green cat" "-silver rhino"' В БУЛИНОВОМ РЕЖИМЕ) ИЛИ Match (body, subject) против ('"+ brown cow" "-silver rhino"' В БУЛЕВОМ РЕЖИМЕ))) Возвращает все записи с любым из фразы, включая «серебряный носорог», поэтому все еще не правы

Запрос 3 SELECT * FROM jos_sea_messages WHERE (Match (body, subject) против ('"+ green cat" "+ brown cow" "-silver rhino") 'В БУЛЕВОМ РЕЖИМЕ)) Возвращает много строк, некоторые из которых, я думаю, не имеют точного выражения ses?

Каков правильный синтаксис для поиска записей, которые содержат (или оба) точные фразы «коричневая корова» и «зеленая кошка», но не должны содержать «серебряный носорог»?

Спасибо заранее.

1 Ответ

0 голосов
/ 21 апреля 2020

Я понял это. Вот мой запрос: SELECT * FROM jos_sea_messages WHERE (Match (body, subject) Against ('' зеленая кошка '' коричневая корова '-' серебряный носорог '' в булевом режиме))

+ не являются требуется, потому что это означало бы, что обе фразы были необходимы, и - выходит за пределы двойных кавычек.

Надеюсь, это поможет кому-то еще. Я уверен, что этот тип требований не уникален

...