TNTSearch имеет приятную функцию для достижения функциональности, подобной панели поиска в возвышенном тексте. Установив пакет, вы сразу получите доступ к функции fuzzyMatchFromFile
.
Давайте рассмотрим случай, когда у вас есть куча изображений, расположенных в одной папке, и вы хотите добавить функцию поиска.
Во-первых, вы должны сохранить список каталогов в файл. Это можно сделать с помощью простой команды, например:
find ./path/to/image/folder -type f -follow -print > image-files.txt
В image-files.txt
каждое изображение будет в отдельной строке
Далее вы предоставите этот файл в качестве второго аргумента функции fuzzyMatchFromFile
$query = "someword";
$path = "/path/to/image-files.txt";
$searchResults = fuzzyMatchFromFile($query, $path);
Массив $searchResults
будет содержать путь к файлу вместе со счетом
Если у вас есть файл с именем beautiful-image.png
, вы сможете искать и находить его также с помощью btfl-img.png
.
Вышеописанное будет работать очень быстро для записей до 100 тыс.
Алгоритм проверяет, существует ли общая подпоследовательность между запросом и именем файла, и если это так, он вычисляет косинусное сходство между двумя векторами (оба имени файла и строки запроса преобразуются к вектору). Также, если подстрока
существует, это увеличивает счет