Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Полнотекстовый поиск

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Артком
Отправлено: 12 Августа, 2010 - 14:54:29
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)

[+]


есть две таблицы, имеющие одинаковую структуру и разное название. по одной таблицуе поиск работает по другой нет (выводит 0 строк). в чем проблема немогу понять.
 
 Top
duk
Отправлено: 12 Августа, 2010 - 16:49:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Февр. 2010  
Откуда: Москва


Помог: 3 раз(а)




можно глянуть на свойства таблицы - способ сравнения
 
 Top
Артком
Отправлено: 12 Августа, 2010 - 18:51:19
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)

[+]


таблицы идентичные.
 
 Top
alexspb
Отправлено: 12 Августа, 2010 - 19:25:33
Post Id


Посетитель


Покинул форум
Сообщений всего: 260
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Артком пишет:
таблицы идентичные.

но предлагаете нам гадать на кофейной гуще...
давайте скл обоих таблиц и запросы


-----
Хостинг - неограниченно доменов на одну папку
Ajax - отличное введение
 
 Top
Артком
Отправлено: 12 Августа, 2010 - 22:58:39
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)

[+]


alexspb пишет:
давайте скл обоих таблиц и запросы


CODE (htmlphp):
скопировать код в буфер обмена
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.3.2deb1
  3. -- http://www.phpmyadmin.net
  4. --
  5. -- Хост: localhost
  6. -- Время создания: Авг 11 2010 г., 22:54
  7. -- Версия сервера: 5.1.41
  8. -- Версия PHP: 5.3.2-1ubuntu4.2
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12.  
  13. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  14. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  15. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  16. /*!40101 SET NAMES utf8 */;
  17.  
  18. --
  19. -- База данных: `fer`
  20. --
  21.  
  22. -- --------------------------------------------------------
  23.  
  24. --
  25. -- Структура таблицы `pizdec`
  26. --
  27.  
  28. CREATE TABLE IF NOT EXISTS `pizdec` (
  29.   `N` int(11) NOT NULL DEFAULT '0',
  30.   `proizvoditel` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  31.   `model` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  32.   `sv` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  33.   `svv` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  34.   `svvv` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  35.   `gg` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  36.   `opisanie` varchar(5000) COLLATE utf8_unicode_ci DEFAULT NULL,
  37.   `ostatok` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  38.   `cena` float(9,2) DEFAULT NULL,
  39.   PRIMARY KEY (`N`),
  40.   FULLTEXT KEY `opisanie` (`opisanie`)
  41. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  42.  
  43. --
  44. -- Дамп данных таблицы `pizdec`
  45. --
  46.  
  47. INSERT INTO `pizdec` (`N`, `proizvoditel`, `model`, `sv`, `svv`, `svvv`, `gg`, `opisanie`, `ostatok`, `cena`) VALUES
  48. (1, 'uuuuu', '777', '8888', '99', '0', '-==', 'bnvnmnghncg j fxgh fgxhxgf ', '6', 8.00),
  49. (2, 'uuuuu', 'vb cv', 'cvxb', 'xcvb', 'xcbx', 'vc b', 'bnvnmnghncg j fxgh fgxhxgf yyyy', '7', 5.00),
  50. (3, 'bcxb', 'xcv', 'xcv', 'vxc', 'zv', 'zvcz', '', '9', 0.00);

CODE (htmlphp):
скопировать код в буфер обмена
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.3.2deb1
  3. -- http://www.phpmyadmin.net
  4. --
  5. -- Хост: localhost
  6. -- Время создания: Авг 11 2010 г., 22:55
  7. -- Версия сервера: 5.1.41
  8. -- Версия PHP: 5.3.2-1ubuntu4.2
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12.  
  13. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  14. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  15. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  16. /*!40101 SET NAMES utf8 */;
  17.  
  18. --
  19. -- База данных: `fer`
  20. --
  21.  
  22. -- --------------------------------------------------------
  23.  
  24. --
  25. -- Структура таблицы `pizdeck`
  26. --
  27.  
  28. CREATE TABLE IF NOT EXISTS `pizdeck` (
  29.   `N` int(11) NOT NULL DEFAULT '0',
  30.   `proizvoditel` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  31.   `model` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  32.   `sv` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  33.   `svv` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  34.   `svvv` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  35.   `gg` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  36.   `opisanie` mediumtext COLLATE utf8_unicode_ci,
  37.   `ostatok` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  38.   `cena` float(9,2) DEFAULT NULL,
  39.   PRIMARY KEY (`N`),
  40.   FULLTEXT KEY `opisanie` (`opisanie`)
  41. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  42.  
  43. --
  44. -- Дамп данных таблицы `pizdeck`
  45. --
  46.  
  47. INSERT INTO `pizdeck` (`N`, `proizvoditel`, `model`, `sv`, `svv`, `svvv`, `gg`, `opisanie`, `ostatok`, `cena`) VALUES
  48. (1, 'uuuuu', '777', '8888', '99', '0', '-==', '-9nnvbnxxcv gfxh gfhsfg h/ gfh/fgxh /sgfh /gfxh /xgfh /xfh xf/h x/', '6', 8.00),
  49. (2, 'uuuuu', 'vb cv', 'cvxb', 'xcvb', 'xcbx', 'vc b', 'poisk ras', '7', 5.00),
  50. (3, 'bcxb', 'xcv', 'xcv', 'vxc', 'zv', 'zvcz', 'bnvnmnghncg j fxgh fgxhxgf  12345', '9', 0.00);

SELECT * FROM `pizdeck` WHERE MATCH (opisanie) AGAINST ('fgxhxgf') - выводит ответ 1 строку
SELECT * FROM `pizdec` WHERE MATCH (opisanie) AGAINST ('fgxhxgf') - выводит ответ 0 строк


Отредактировано модератором: JustUserR, 13 Августа, 2010 - 01:55:32
Обрамил описания SQL-таблиц в BB-тег со спойлером
 
 Top
dsb80
Отправлено: 13 Августа, 2010 - 00:31:42
Post Id



Гость


Покинул форум
Сообщений всего: 71
Дата рег-ции: Янв. 2009  
Откуда: СПб


Помог: 0 раз(а)




Практически не глядя могу сказать, что для работы полнотекстного поиска необходимо заполнить таблицы минимум как на 10 СТРОК!


-----
Не слушайте... После 19.00 вместо меня пишет ПЫВО
 
 Top
JustUserR
Отправлено: 13 Августа, 2010 - 01:59:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Артком Различные результаты поиска по аналогичным данным могут возникать в том случае - когда кодировка соединений или строковых констант запрашиваемых данных - не совпадает с внутренним ее представлением или collation-значением в БД для данной таблицы или конкретной строки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Артком
Отправлено: 14 Августа, 2010 - 22:25:31
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)

[+]


меняем запрос поиска на SELECT * FROM `pizdec` WHERE MATCH (opisanie) AGAINST ('fgxhxgf' IN BOOLEAN MODE) и все работает. как обьяснить это?
кодировка одинаковая
 
 Top
JustUserR
Отправлено: 15 Августа, 2010 - 01:47:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Uchkuma пишет:
А я думал, DW адоб купил.
Да действительно корпорация Abode купила компанию Macromedia - и использует ее продукты со своей торговой маркой начиная с версии пакета CS3


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Viper
Отправлено: 16 Августа, 2010 - 08:21:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Артком уважаемый а где вы видели чтобы поле VARCHAR было больше 256 символов?
это что за бред "`opisanie` varchar(5000)" ?

Артком пишет:
меняем запрос поиска на SELECT * FROM `pizdec` WHERE MATCH (opisanie) AGAINST ('fgxhxgf' IN BOOLEAN MODE) и все работает. как обьяснить это?
кодировка одинаковая

вопрос в том - как работает? вы получаете релевантный результат илил просто набор результатов? если второе то LIKE будет быстрее.
К тому же IN BOOLEAN MODE подразумевает обязательное использование операторов.
Обратитесь к мануалу http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]ext-boolean[dot]html иначе ваш "полнотекстовый" поиск лишен смысла.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Артком
Отправлено: 16 Августа, 2010 - 15:49:32
Post Id


Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)

[+]


Viper, собственно вопрос поставлен для того чтоб понять что не так, а не чтобы получить ссылку на мануал по MYSQL

"это что за бред "`opisanie` varchar(5000)" ?"

По Вашему,чтото изменится, если исправить на 256? ничего. значит, проблема не в этом.
кроме того, оператор LIKE работает несколько иначе, зачем разбивать запрос поиска на части посредствами PHP и делать запрос через LIKE если MYSQL сделает это само ?

Вопрос все еще актуален.

(Отредактировано автором: 16 Августа, 2010 - 15:57:09)

 
 Top
Viper
Отправлено: 16 Августа, 2010 - 16:23:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Артком Если бы потрудились прочитать мануал, то вопроса бы не возникло.
Что ж повторю ещё раз - для BOOLEAN MODE необходимо использовать операторы!

Артком пишет:
По Вашему,чтото изменится, если исправить на 256? ничего. значит, проблема не в этом.

действительно чего уж тут... давайте тогда уж индексы в blob пихать...

Я не предлагал разбивать результаты для LIKE на php.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Champion Супермодератор
Отправлено: 16 Августа, 2010 - 19:58:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Начинаю читать по чуть-чуть
1 - Viper, давно прошли те времена, когда varchar был 256. Сейчас он может быть 64к, если не больше. Где-то, может быть, и 2Г
(Добавление)
2 - По вопросу. Что выведут запросы
SELECT p.*, MATCH (opisanie) AGAINST ('fgxhxgf') as relevance FROM `tbl` p ?
(Добавление)
3 - То, что работает in boolean mode можно объяснить штукой, которая называется 50% threshold. Правда, не очень пойму как она может здесь проявиться
 
 Top
JustUserR
Отправлено: 17 Августа, 2010 - 02:46:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Артком пишет:
Таблицы идентичные
Для диагностики можете попробовать оставить таблицу по которой полнотекстовый поиск проходит успешно и удалить вторую - а потом выполить полное копирование первой таблицы со всей находящейся в ней информацией и настройками - можно также использовать вход от привелегированного пользователя и скопировать полную струкруту из служебной таблицы information_chema - а также попробовать выполнить операцию восстанеовления REPAIR для вашей таблицы


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Viper
Отправлено: 17 Августа, 2010 - 07:50:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Champion пишет:
давно прошли те времена, когда varchar был 256. Сейчас он может быть 64к, если не больше. Где-то, может быть, и 2Г


вопрос в том что оптимальнее, будет быстрее работать и займет меньше места. тем более ни в одной документации к mysql я не встречал чтобы это поле было больше 255.

по теме... к примеру

CODE (SQL):
скопировать код в буфер обмена
  1. ... WHERE MATCH (FIELDS) AGAINST ('* ~fgxhxgf' IN BOOLEAN MODE) ...


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB