2012-06-11 7 views
0

** EDIT * *полнотекстовый поиск не находит ничего

нормально, так что я нашел problam, это было то, что минимальная длина слова для поиска было 4, я изменил его 3, но теперь она находит только строки 1 данных, а не грести Aswell 2 данных ...

----- оригинальный вопрос: ----

У меня есть таблица MyISAM на моем PHPMyAdmin как это:

table name: `users` 
coulmn name: `name` 
row 1 data: 'dan' 
row 2 data: 'dan252' 

(это просто важная часть)

теперь имя полнотекстовый индекс поля, им с помощью этого запроса:

SELECT * FROM `users` WHERE MATCH(`name`) AGAINST('dan') 

но PHPMYADMIN возвращает:

MySQL returned an empty result set (i.e. zero rows). (Query took 0.0004 sec) 

почему он ничего не нашел?

* РЕДАКТИРОВАТЬ *

нормально, так что я нашел problam, это было то, что минимальная длина слова для поиска было 4, я изменил его до 3, но теперь она находит только строку 1 данных и а не строки 2 данных ...

ответ

1

MATCH работает только на колонках с FULLTEXT indicing. А индикаторы FULLTEXT работают только в таблицах MyISAM.

Во-вторых, 'dan', вероятно, too short для использования на MATCH.

В-третьих, если ваш поисковый запрос соответствует более чем 50% ваших строк, термин считается слишком распространенным, и поиск не выполняется.

Да, читайте here.

+0

читайте править пожалуйста –

0

Попробуйте это.

SELECT * FROM users WHERE MATCH (name) ПРОТИВ ('dan');

Я думаю, вы используете апострофы для имени табуляции и в MATCH. Это не верно. Попробуйте и дайте мне знать, если это сработает.

0

Я думаю, вы пытаетесь вернуть все с помощью «dan» в них Вы можете попробовать команду LIKE.

SELECT * FROM users WHERE name LIKE '%dan%' 

Это будет возвращать «дан» и «dan252» и (если он был в таблице) '123dan456.

Вы также можете попробовать

SELECT * FROM users Match(name) AGAINST('+dan*') 

Это должно возвратить то же самое, и, вероятно, более эффективным. Если вы только пытаетесь использовать 'dan', используйте его как @Kirishna.

SELECT * FROM users WHERE MATCH (name) AGAINST ('dan') 
+0

Я хочу использовать полный текст, а не LIKE, первый возвращает ошибку синтаксиса, а второй возвращает пустой результат. –

+0

Вы можете попробовать 'SELECT * FROM users WHERE CONTAINS (name," dan ")' Я взял это из [Microsoft SQL] (http://msdn.microsoft.com/en-us/library/ms142571.aspx), поэтому он может не работать. – Bonzo

+0

возвращает пустой результат, а также –

Смежные вопросы