Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Кто сможет помочь создать систему поиска по словам в sql

Иван Слинский Ученик (110), на голосовании 1 год назад
Мне нужен поиск по словам в запросе для sql.
Допустим фраза "Адрей в Москве искал магазин для игрушек".
Что бы я мог взять каждый элемент в котором есть хоть одно слово из фразы выше.(из фразы,а не букв запятых,союзов и тд)
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445773) 1 год назад
Оракловский синтаксис:
 WITH 
WORDS
AS
( SELECT REGEXP_SUBSTR ('The quick brown fox',
'[^ ]+',
1,
LEVEL) AS STRING_PARTS
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('The quick brown fox',
'[^ ]+',
1,
LEVEL)
IS NOT NULL)
SELECT SOMEFIELD
FROM SOMETABLE T
INNER JOIN WORDS W ON INSTR (T.SOMEFIELD, W.STRING_PARTS) > 0
Чем длиннее фраза и чем больше записей в SOMETABLE, тем дольше будет жужжать, причем никакие индексы не помогут - всю таблицу нужно будет просканировать полностью для каждого слова.
Иван СлинскийУченик (110) 1 год назад
это что? мне на php нужно
EVK IT Сервис К Мыслитель (5226) 1 год назад
1) чистим строку запроса от союзов и тд
2) Затем:
$search = mb_strtolower($search,'UTF-8');
$search=preg_replace("/[^а-яА-Яa-zA-z0-9\-]/ui","%",$search);
3) запрос LIKE '%".$search."%'
Похожие вопросы