Добрый день. Только сейчас начал размышлять на данную тему, но обратился сюда, так как здесь могут подсказать рациональный вариант. Есть input text, куда пользователь вводит свой запрос из слов, они разделены пробелом. На back-end нужно реализовать следующее: в переменную, допустим $dir, нужно положить название той папки, которая наиболее точно соответствует запросу пользователя. Поясню на примере. Есть две папки: "Машина.Колесо" и "Машина" (слова разделяются точкой). Если в запросе человека есть оба слова, то нужна первая папка, но если присутствует только слово "Машина", то берем вторую. В голове пока только одна мысль: разделить запрос на слова, как массив, затем циклом прогнать все папки, но по какому условию, сформулировать пока не смог. Благодарю!
И да, еще кое-что забыл. Не на все запросы существуют соответствующие папки. Например, человек напишет "машина колесо дорога", однако на сервере будет только две папки: "машина" и "машина.дорога". В таком случае нужно брать папку "машина.дорога", так как она более соответствует запросу.
Доброе утро.
Что-то слишком мудрёно получается.
А не проще ли этот набор слов хранить в базе?
Таблица, в одном поле набор слов, в другом путь в директории.
Искать в таблице соответствие, если есть - выдавать путь к директории.
Да и название директорий на сервере кириллицей как-то не очень хорошее решение.
slo_nik, благодарю за отзыв. На кириллицу не обращайте внимания, названия я указал лишь как пример. У меня сейчас аналогичная схема, однако существенный недостаток в том, что нужно вручную вписывать путь в таблицу, на это уходит время, хоть даже и небольшое. Хотелось бы автоматизировать чуток этот процесс: просто создал нужную папку, а сервер её сразу же начинает использовать.
slo_nik, создаётся вручную, через ftp, так как управлять этими данными имеет право только главный админ. Нужно, чтобы сервер только считывал информацию. У самого голова чуток кругом идет от задания...
slo_nik, не совсем, у меня только, как и сказал, аналогичная схема. Непосредственно в php файле стоит блок сравнений if else, в условии прописаны mb_stripos, в зависимости от совпадения с условием в $dir вручную прописывается название папки. Вообщем, таблица не используется, но и тут и там ручное вписывание.
Игорь, у Вас все директории складываются в одну общую? Правильно?
Если так, то путь к общей директории Вам известен и писать его вручную не надо.
Остаётся только добавить название нужной директории.
Получается, что если есть совпадение, то Вы можете автоматически получить имя директории и подставить её в путь.
Вообще-то не мешало бы Вам показать код, который всё это делает.
Без этого можно гадать долго, как лучше сделать.
slo_nik, да, именно так. Все папки в одной директории. Идея с совпадением - то, что нужно, но что если совпадать будут несколько папок? Как определить именно ту, которая наиболее точно соответствует? Код банальный, приведу только отрывок.
Игорь, я это уже описал выше в комментарии.
Вы делаете запись в базу необходимых слов. При записи в базу слов автоматически создаёте директорию и записываете путь к ней в туже таблицу.
При совпадении слов выдаёте путь к директории.
slo_nik, Вы меня, может быть, не совсем правильно поняли. Доступ к директории с папками у меня есть через php команды, как чтение, так и запись. Просто заполнением этими папками занимается админ через ftp, мое же задание организовать точное считывание из нужной папки.
Игорь, вот и организуйте. Проблема то в чём?
Вы получаете совпадения в словах и так же получаете путь к директории. Слова и путь хранятся в одной таблице, в соседних ячейках.
Вам нужно только автоматически создать директорию(не обязательно совпадение со словами) и записать эти данные в таблицу.
Сейчас, как мне думается, Вы крайне усложняете задачу.
similar_text кажется очень хорошим способом решения, только подскажите, пожалуйста, как в цикл включить все папки в директории, ведь названия у всех разные?