2013-04-04 11 views
0

Проблема с mysql-запросами. Я использую полнотекстовый поиск.mysql полнотекстовый поиск

Я пытаюсь найти точное совпадение в моей таблице фотографий, но возникают проблемы.

Допустим, у меня есть фото описание, как «Reodor Hansen имеют проблемы с MySQL»

ЕСЛИ Я тогда поиск пользователя по имени Reodor Mysql, картина, где Reodor Хансен отмечен, будет видно.

Есть ли варианты, чтобы получить точное соответствие? Теперь я про цитаты вроде «и», но они мне не помогают.

Проблема в том, что у меня нет фотографий Reodor Hansens, видимых в поиске, когда для Reodor Mysql.

Вот запрос я использую

SELECT * FROM _photos WHERE MATCH (описание) ПРОТИВ ('Reodor Mysql' IN BOOLEAN MODE)

Далее. Любая идея, как я могу сделать этот шаг дальше? Так что я в поле поиска можно написать

«все фотографии Reodor Mysql» или «показать мне последние 10 фотографий Reodor Mysql закачано»

и поиск реагировать на это?

+0

Вы можете использовать (мою) библиотеку PHP для этого: https://github.com/alexschwarz89/easy-mysqli-fulltext – Alex2php

ответ

1

Если вы хотите найти точную фразу, вы можете использовать двойные кавычки. Точно так же, как это

SELECT * FROM _photos WHERE MATCH (description) 
        AGAINST ('"Reodor Mysql"' IN BOOLEAN MODE); 

Если вы хотите, чтобы последние 10 фотографий вы могли добавить в запрос запрос LIMIT. Что-то вроде этого

SELECT * FROM _photos WHERE MATCH (description) 
        AGAINST ('"Reodor Mysql"' IN BOOLEAN MODE) 
        ORDER BY uploaded_date DESC 
        LIMIT 10; 
+0

Спасибо. Это сработало. Любая идея о том, как решить мой другой вопрос? Как я могу попросить, чтобы у одного пользователя были последние фотографии X или где один пользователь последний раз находился в отпуске? –

+0

Я не знаю, как ответить на второй вопрос, потому что я не знаю, как ваша схема и ваши данные. Чтобы ответить на этот вопрос, мне понадобится дополнительная информация, например: Где вы храните дату загрузки? Где вы храните отпуск пользователей? Полный текст - это просто индекс MySQL, который позволяет выполнять более быстрые запросы в текстовом столбце. – alexrom7

0

Если года хотят точное совпадение Reodor Mysql вам придется использовать LIKE operator:

SELECT * FROM _photos WHERE description LIKE '%Reodor Mysql%' 
Смежные вопросы