megakor
@megakor
PHP погроммист

Как найти и заменить слова в тексте на синонимы, которые хранятся в БД?

Всем привет!
Делаю рерайтер текста/синонимайзер.
Есть текст, который ввел пользователь (допустим 5 тысяч слов).
Есть таблица в БД - words и synonyms_binds (со связями, образующие группу слов-синонимов - ну про это тут не будем).
В таблице words и synonyms_binds могут быть миллионы записей.

Как лучше обработать текст, чтобы заменить слова на синонимы, которые есть в БД?

Я понимаю. есть 3 основных варианта:
1. Выгрузить все синонимы в массив и делать str_replace, беря за основу этот массив. Но если в базе синонимов миллионы записей будет? Рационально будет при каждой операции выгружать всю таблицу в один массив?
2. Разделить весь текст на массив слов (что-то типа explode(' ', $text)) и делать foreach каждому слову. В каждом слове будет отдельный select. Таким образом в рамках нашего текста будет 5000 select'ов, тоже мне кажется нехороший вариант.
3. Таким же образом разделить текст на массив, и делать запрос что-то типа:
select * from words where name in('<?= implode("', '", $wordsArray) ) ?>');


Как лучше поступить? Или может есть способ ещё лучше?
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы