Необходимо реализовать функцию поиска по БД MySQL. Требуется, чтобы скрипт выдавал только совпадения с целыми словами или предлогами. Однако при использовании параметра FULLTEXT слова менее 4 символов не находятся. Есть ли ещё какие-либо варианты реализации подобной функции? Заранее спасибо!
Спустя 2 часа, 1 минута, 50 секунд (15.08.2010 - 08:14) Basili4 написал(а):
Илья28
напиши запрос который ты используешь поиск не зависит от количества букв
напиши запрос который ты используешь поиск не зависит от количества букв
SELECTвот например запрос он все находит
wsx
FROM
test.table1
WHERE
wsx like 'is';
Спустя 8 часов, 54 минуты, 29 секунд (15.08.2010 - 17:08) Guest написал(а):
При использовании like в данном случае найдутся строки содержщие как is, так и island, Istambul. А мне нужны
Цитата |
совпадения с целыми словами или предлогами |
Спустя 35 минут, 5 секунд (15.08.2010 - 17:43) waldicom написал(а):
Спустя 16 минут, 56 секунд (15.08.2010 - 18:00) Guest написал(а):
Я не могу изменить ft_min_word_len так как не имею доступа к системному файлу.
Спустя 59 минут, 13 секунд (15.08.2010 - 18:59) FatCat написал(а):
Полнотекстовый поиск не спасет?
Спустя 2 часа, 18 минут, 10 секунд (15.08.2010 - 21:18) Guest написал(а):
Вы имеете в виду FULLTEXT? Я ведь про это писал уже в первом посте.
Спустя 2 часа, 53 минуты, 34 секунды (16.08.2010 - 00:11) FatCat написал(а):
Цитата (Guest @ 15.08.2010 - 22:18) |
писал уже в первом посте |
Мои извинения, прошляпил. [краснеющий смайлик]
Похожую ситуацию в ограниченном тексте решал средствами пхп следующим образом:
1. Сначала все не цифробуквенные символы заменял на пробелы:
$nstring = " ".preg_replace( "/[^[:alnum:]]/", " " , $nstring );
2. Затем уже искал целые слова:
if(stristr($nstring," ".$word." "))
ИМХО, можно попробовать вытянуть из БД по
WHERE word NOT LIKE '%".$word."%'вытянуть любые вхождения, и уж затем средствами пхп оставить только те, где вхождения целых слов.
Думаю, это будет менее нагрузочно, чем гонять регулярки в MySQL-е.