Всички предлагат пълнотекстово търсене на MySQL, но трябва да сте наясно с ОГРОМНО предупреждение. Пълнотекстовата търсачка е достъпна само за машината MyISAM (не InnoDB, която е най-често използваната машина поради нейната референтна цялост и съответствие с ACID).
Така че имате няколко опции:
1. Най-простият подход е описан от Дървото на частиците . Можете всъщност да получите класирани търсения от чист SQL (без пълен текст, без нищо). 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 заявка, добавяне на изрази WHERE (WHERE p.body LIKE '%whatever%you%want') и т.н. вероятно ще ви осигурят точно това, от което се нуждаете.
2. Можете да промените схемата на вашата база данни, за да поддържате пълен текст. Често това, което се прави, за да се запази референтната цялост на InnoDB, съответствието с ACID и скоростта, без да се налага да се инсталират плъгини като Sphinx Fulltext Search Engine за MySQL е да раздели данните за цитатите в собствената си таблица. По принцип ще имате таблица Quotes, която е таблица на InnoDB, която вместо да имате вашето TEXT поле "data", имате препратка "quote_data_id", която сочи към идентификатора на таблица Quote_Data, която е таблица MyISAM. Можете да направите своя пълен текст в таблицата MyISAM, да се присъедините към идентификаторите, върнати с вашите InnoDB таблици и воаля, имате вашите резултати.
3. Инсталирайте Sphinx . Успех с този.
Предвид това, което описахте, бихСИЛНО препоръчвам ви да използвате първия подход, който представих, тъй като имате прост сайт, управляван от база данни. Първото решение е просто, свършва работата бързо. Lucene ще бъде кучка за настройка, особено ако искате да го интегрирате с базата данни, тъй като Lucene е предназначен главно да индексира файлове, а не бази данни. Персонализираното търсене в сайтове с Google просто кара вашия сайт да загуби много репутация (прави ви да изглеждате аматьорски и хакнат), а пълният текст на MySQL най-вероятно ще ви накара да промените схемата на базата си от данни.