Мы используем sphinx в базе данных среднего размера (10-миллиметровые записи, 2 гб) с использованием стандартного подхода EXTENDED2/SPH_RANK_PROXIMITY_BM25. Скорость велика, актуальность - это место.Настройка сфинксов для любых/частичных совпадений [через PHP]
Однако мы сталкиваемся с растущими жалобами от конечных пользователей, которые ищут более сложные термины, чем то, что наша база данных имеет и, таким образом, не дает никаких результатов.
К примеру, у нас есть продукт "KitchenAid Artisan 5-Quart Смесители" в то время как общий поиск "KitchenAid Artisan 5-Quart Стенд Миксеры коричневый". Результат с нашими текущими настройками не соответствует, когда мы сможем вернуть элемент, который у нас есть.
Мы попытались использовать сортировку MATCH_ANY по весу, но релевантность полностью исчезает [думаю, куклы и настольные игры появляются], поскольку сфинкс поднимает другие продукты с отдельными словами.
Есть ли способ наилучшей практики построения наших параметров запроса, которые позволят использовать более открытое сопоставление, сохраняя при этом близость и плотность слов?
Вот наши текущие команды PHP API, если это помогает
$cl = new SphinxClient();
$cl->SetServer('1.23.4', 456);
$cl->SetMaxQueryTime(15000);
$cl->SetMatchMode(SPH_MATCH_EXTENDED2);
$cl->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
$cl->SetArrayResult(true);
$cl->SetFilter('active', array(1));
$cl->SetSortMode(SPH_SORT_RELEVANCE, '@weight DESC, priced ASC');
$cl->SetLimits(intval($try), 1, 20, 500);
$cl->SetFieldWeights(array('ptitle' => 60, 'description' => 40));
$res = $cl->query($searchterm,"products");
Кворум и ваш код выглядят как раз то, что нам нужно, чтобы освободить вещи достаточно. Для тех, кто работает над этим, мы придерживались соответствия EXTENDED2, так как близость действительно помогает. Также было снято обрезание, которое, возможно, помогло вам. –
Примечание: в коде содержится небольшая ошибка. «После первого». $ Кворума. бит должен быть удален для всех, кто сталкивается с проблемами. –
Opps! Отредактирован ответ, чтобы исправить это. – barryhunter