WHERE
внутри вставки не вызывает никакого смысла.
Если вы хотите добавить новую строку в свою базу данных, вам не понадобится предложение WHERE
, поскольку нет существующего строка, на которую вы можете ссылаться.
Если вы хотите обновить существующую строку, вам не следует использовать оператор INSERT
, но оператор UPDATE
.
Все предлагают полнотекстовый поиск MySQL, однако необходимо знать об ОГРОМНОМ протесте. Механизм Полнотекстового поиска только доступен для механизма MyISAM (не InnoDB, который является обычно используемым механизмом из-за его ссылочной целостности и соответствия ACID).
, Таким образом, у Вас есть несколько опций:
1. самый простой подход обрисован в общих чертах Дерево Частицы . Можно на самом деле получить оцениваемые поиски от чистого SQL (никакой fulltext, нет ничто). SQL-запрос ниже будет искать таблицу и оценивать результаты, базирующиеся от количества случаев строки в полях поиска:
SELECT
SUM(((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'term', '')))/4) +
((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'search', '')))/6))
AS Occurrences
FROM
posts AS p
GROUP BY
p.id
ORDER BY
Occurrences DESC
отредактировал их пример для обеспечения немного большей ясности
Вариации на вышеупомянутый SQL-запрос, добавив, ГДЕ операторы (ГДЕ p.body КАК '%whatever%you%want'), и т.д. вероятно, получат Вас точно, в чем Вы нуждаетесь.
2. можно изменить схему базы данных для поддержки полного текста. Часто, что сделано для хранения ссылочной целостности InnoDB, соответствия ACID и скорости, не имея необходимость устанавливать плагины как , Механизм Полнотекстового поиска Сфинкса для MySQL должен разделить данные кавычки на свою собственную таблицу. В основном у Вас была бы таблица Quotes, которая является таблицей InnoDB, что, вместо того, чтобы иметь Ваше Текстовое поле "данные" у Вас есть ссылка "quote_data_id", который указывает на идентификатор на таблице Quote_Data, которая является таблицей MyISAM. Можно сделать fulltext на таблице MyISAM, присоединиться к идентификаторам, возвращенным с таблицами InnoDB, и вуаля у Вас есть свои результаты.
3. Установка Сфинкс . Удача с этим.
Данный, что Вы описали, я буду ВЫСОКО , рекомендуют проявить 1-й подход, который я представил, так как у Вас есть простая база данных управляемый сайт. 1-е решение просто, сделали задание быстро. Lucene будет сукой для установки особенно, если Вы захотите интегрировать его с базой данных, поскольку Lucene разработан главным образом к индексным файлам не базы данных. Google пользовательский поиск сайта просто заставляет Ваш сайт потерять тонны репутации (заставляет Вас выглядеть дилетантскими и взломанными), и MySQL fulltext, скорее всего, заставят Вас изменять свою схему базы данных.
Используйте Google Custom Site Search . Я услышал, что они знают вещь или два о поиске.
Stackoverflow планирует использовать поисковая система Lucene . Существует порт PHP записанного для Платформы Зенда, но может быть загружен как отдельный объект, не нуждаясь во всем чрезмерном увеличении размера ZF. Это называют Zend_Search_Lucene, документация, для которой может быть найден здесь .
Ваш sql для этого будет выглядеть примерно так (где Вы пытаетесь найти кавычки с 'индейкой' в нем):
SELECT * FROM Quotes
WHERE the_quote LIKE "%turkeyt%";
Оттуда можно выяснить, что сделать, с чем это выкладывает в Вас.
Стараться правильно обработать случаи, где злонамеренный пользователь мог бы , вводят злонамеренный SQL в Вашу базу данных, особенно если Вы - планирование помещения этого на www. Если Вы делаете это для забавы, хотя, я предполагаю, что это примерно, что Вы хотите изучить.
, Если Вы плохо знакомы с базами данных и sql, я рекомендую sqlite по mysql. Очень легче настроить и работать с, как в не настроенном. Это получит Вас вокруг потенциальных головных болей необходимости установить и настроить mysql впервые.
Я пошел бы с Полнотекстовым поиском, посмотрел бы на него здесь: http://hockinson.com/fulltext-search-of-mysql-database-table.html
Если Вы хотите записать свое собственное, смотреть на реализацию phpBB. У них есть две таблицы, первым является уникальный список всех слов, которые появляются в записях, и второй является many-many ссылка между словами и записями. Вы могли затем сделать группу и количество для сортировки записей таким образом, Вы ищете.
Это - намного больше работы, затем реализовывая стороннюю поисковую систему (или полнотекстовый поиск), но это позволит Вам большее управление результатами.
Как альтернатива Sphinx и Lucene, относительно простая поисковая система может быть создана с помощью библиотека Xapian.
+
Поддерживает много функций расширенного поиска (таких как рейтинг уместности)
+
Быстрый
-
, необходимо было бы узнать, что API для создания интерфейса
-
Требует, чтобы php расширение было установлено
Примечание также, что Xapian хранит свои данные в отдельном индексе к mysql.
Вы могли бы также интересоваться Фураж , который является оберткой для Solr, Xapian и Lucene.
люди Xapian также создали поисковую систему Омеги, которая является frontend к Xapian и может быть названа через cgi.
Пользовательский Поиск Сайта Google является большим, если Вы не запрашиваете его очень (я думаю, что Вы получаете запросы 1k / день бесплатно), или если Вы готовы заплатить.
полнотекстовый поиск MySQL является также большим ресурсом (как был упомянут ранее).
БОСС Yahoo является интригующим проектом - я собираюсь дать ему выстрел во время своего следующего поискового проекта.
И, наконец, Lucene является большим ресурсом, если Вы нуждаетесь в большем количестве питания, чем fulltext, но хотите настроить свою собственную поисковую систему. http://lucene.apache.org
Я наткнулся на Zoom Search Engine a несколько дней назад и думаю, что это может быть самая простая поисковая система, которую я когда-либо использовал.
Инструмент на базе Windows создает базу данных сайта, а затем также спрашивает, на каком языке (PHP, ASP.NET, JavaScript и т. д.), вы хотите использовать. Я выбрал PHP, и он создал для меня PHP-код. Все, что мне нужно было сделать, это загрузить файлы на сервер и (необязательно) настроить шаблон, и поиск по сайту работал.
Это бесплатно для небольших сайтов,