Как найти все варианты сочетания элементов массива?

Задача: нужно сделать функцию которая получает строку, например "Решетка для вентиляции", а возвращает различные формы и склонения этой строки, например "Решетки для вентиляции", при этом нужно еще получать варианты с разным порядком, например "для вентиляцию решетку"
Использую phpmorphy для получения всех форм слова, в итоге у меня 2-x мерный массив. Проблема что не могу понять каким алгоритмом получить все вариации элементов этого массива.
Проблема что размерность массива величина переменная. В какую сторону копать?
  • Вопрос задан
  • 542 просмотра
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Решение в лоб:
- разбить фразу по словам (получится массив из N строк),
- для каждого слова построить его все словоморфы (в итоге массив из N массивов),
- рекурсивно N раз брать следующее слово из N-ного элемента массив
- для перемешивания слов либо отдельный метод по полученному массиву, либо N-квадрат рекурсий предыдущего пункта
Итог: уже на 5 словах даже мощный сервер сдохнет

Умное решение: скормить исходную фразу Sphinx/Lucene - они нами найдут нужное среди вашего контента
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы