powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Стоит ли использовать такой вариант для поиска
2 сообщений из 2, страница 1 из 1
Стоит ли использовать такой вариант для поиска
    #38669836
Гуляев Гоша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!

Подскажите пожалуйста, стоит ли городить подобный огород для поиска:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
TABLE textData (
  id           INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  textData     TEXT NOT NULL
) COMMENT="Таблица с текстовыми данными"

TABLE slovaData (
  id           INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  slovo        CHAR(50) NOT NULL UNIQUE 
) COMMENT="Таблица с имеющимися словами"

TABLE textSlovaRelation (
  id           INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  textID       INT UNSIGNED NOT NULL,
  slovoID      INT UNSIGNED NOT NULL,
  FOREIGN KEY  (textID) REFERENCES textData(id) ON DELETE CASCADE ON UPDATE CASCADE,
  FOREIGN KEY  (slovoID) REFERENCES slovaData(id) ON DELETE CASCADE ON UPDATE CASCADE,
  UNIQUE KEY   rel (textID,slovoID)
) COMMENT="Таблица со списком слов имеющихся в данном тексте"



Ну и соответственно при добавлении нового текста в textData , по пробелам расхерачивать текст и все слова в таблицу slovaData .
Ну и последующее добавление соответствующих данных в textSlovaRelation .

И поиск организовывать таким образом (задача выбрать тексты, в которых есть все слова имеющие такую подстроку).

Например запрос: браузер завис profe будет трансформирован в запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT   aa.id
FROM     textData             AS aa
JOIN     textSlovaRelation    AS bb ON bb.textID=aa.id
JOIN     slovaData            AS cc ON cc.id=bb.slovoID
WHERE    cc LIKE "%браузер%"
    OR   cc LIKE "%завис%"
    OR   cc LIKE "%profe%"
GROUP BY aa.id
HAVING   COUNT(aa.id)=3 /*Кол-во слов в поисковом запросе*/


и надо ли этот огород городить по сравнению с поиском таким запросом:
Код: sql
1.
2.
3.
4.
5.
SELECT    aa.id 
FROM      textData  AS aa
WHERE     aa.textData LIKE "%браузер%"
    AND   aa.textData LIKE "%завис%"
    AND   aa.textData LIKE "%profe%"



Будет ли вариант №1 выгодней в плане производительности при накапливании большого кол-ва сообщений?
...
Рейтинг: 0 / 0
Стоит ли использовать такой вариант для поиска
    #38669852
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гуляев Гоша,

не изобретайте велосипед, прочитайте про full-text search
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Стоит ли использовать такой вариант для поиска
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]