Вход Регистрация
* Удален

Организация полнотекстового поиска в MYSQL *

  1. <?php
  2. //что ищем
  3. $search = 'поисковая строка' ;
  4. /*
  5. Для организации поиска при
  6. небольшой нагрузки и
  7. коротких текстах отлично
  8. подходит оператор LIKE,
  9. пример
  10. */
  11. $q = mysql_query ( "SELECT *
  12. FROM tablica WHERE pole LIKE
  13. '% $search %' " );
  14. /*
  15. Тут вроде бы все нормально,
  16. но когда количество записей
  17. и их объем сильно возрастет
  18. вы заметите, что поиск
  19. начинает занимать довольно
  20. много времени, и в итоге
  21. может достичь
  22. недопустимых пределов.
  23. В таких случаях необходимо
  24. воспользоваться ИНДЕКСАМИ,
  25. например, сделаем через
  26. phpMyAdmin полнотекстовый
  27. индекс для ячейки pole, sql
  28. дамп создания таблицы
  29. приведен ниже
  30. CREATE TABLE `tablica` (
  31. `id` int(11) NOT NULL
  32. auto_increment,
  33. `pole` TEXT,
  34. PRIMARY KEY (`id`),
  35. FULLTEXT KEY `kluch`
  36. (`pole`)
  37. ) ENGINE=MyISAM DEFAULT
  38. CHARSET=utf8
  39. обратите внимание на
  40. FULLTEXT KEY `kluch`
  41. (`pole`), индекс повешен на
  42. ячейку pole,
  43. как нетрудно заметить,
  44. размер базы данных из-за
  45. индекса увеличился примерно
  46. вдвое (за все надо
  47. платить).
  48. Теперь искать по такой базе
  49. надо вот так:
  50. */
  51. $q = mysql_query ( "SELECT *
  52. FROM tablica WHERE MATCH
  53. pole AGAINST (' $search ') " );
  54. /*
  55. Скорость поиска возрастет
  56. минимум в 10раз, так же из
  57. плюсов то, что результаты
  58. будут отсортированы
  59. по релевантности (тоесть
  60. сначала вся фраза, потом по
  61. частоте попадания слов)!
  62. (если не применять ORDER BY
  63. для иной сортировки конечно)
  64. Также есть и минусы:
  65. 1. слова менее 4 символов
  66. не учитываются (как не
  67. имеющие "веса")
  68. 2. русские фразы находятся
  69. без учета морфологии
  70. 3. размер базы увеличивается
  71. из-за индекса
  72. 4. операции INSERT и UPDATE
  73. выполняются медленнее из-за
  74. индекса
  75. если у вас в таблице более
  76. 10000 строчек и размер бд
  77. более 5мб наверное стоит
  78. перейти на полнотекстовый
  79. поиск
  80. */
  81. ?>
» Описание: Организация полнотекстового поиска в MYSQL *
» Время добавления: 25 Мая 2014 в 23:03
» Посмотров: 1007
» textarea
» Рейтинг: [+0 | -0]
Комментарии [0]
Онлайн: 2
Реклама
Игры между пользователями