@SevenShots

Как найти лучшее совпадение в массиве PHP?

Например есть искомый ключ: "евроремонт за кв.м. цены под ключ"

И есть массив с заголовками:
1) Евроремонт под ключ
2) Евроремонт цены за кв.метр

Как найти лучшее совпадение? Сейчас перебираю циклом и ищу через strripos, но в таком случае в массиве он находит первое совпадение и не смотрит массив далее. Как сделать чтобы находил лучшее совпадение из всего массива? Спасибо!)
  • Вопрос задан
  • 448 просмотров
Пригласить эксперта
Ответы на вопрос 3
402d
@402d
начинал с бейсика на УКНЦ в 1988
Если Вы ждете ответ в несколько строчек, то на чистом php его нет.
Поиск текста наиболее релевантного введенному лучше всего делает сфинкс.

А на php вы можете только писать очередной велосипед.
нужно пройти функцией расчета совпадения по всем элементам массива
и запомнить где был максимум.

Лучшую выводите.

p.s. Это Вы про русскую морфологию еще не вспомнили.
Ответ написан
Такая идея:
И есть массив с заголовками:
1) Евроремонт под ключ
2) Евроремонт цены за кв.метр


Разбиваем на массивы по пробелу $arr1 = explode(" ", "Евроремонт под ключ") и
$arr2 = explode(" ", "Евроремонт цены за кв.метрч")


Каждый элемент массива ищем в
"евроремонт за кв.м. цены под ключ"

$counter = 0;
forech($arr1 as $value){
if (strpos("евроремонт за кв.м. цены под ключ", $value) !== false){
$counter++;
}
}


А там уже задайте критерии выбора лучшего совпадения, либо процентное соотношение,(Например 75%, 3 из 4 слов есть в исходной строке), либо количество совпадение.
Ответ написан
@Nc_Soft
Вы решаете задачи, которые уже решены до вас другими инструментами (ищете релевантность)
Нужно только выбрать инструмент
https://www.elastic.co/products/elasticsearch
sphinxsearch.com
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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