Как настроить релевантность Sphinx по началу строки?

Делаю запрос и получаю результат.
Запрос: кисточ
  • Клей секундный Супер Момент Профи плюс с кисточкой, 5г
  • Флюс для пайки паяльная кислота с кисточкой 25мл REXANT
  • Кисточка силиконовая 18,5 см Function Form Fiskars
  • Кисточка для теста 22,5 см KL40A09-08
  • Щетка кисточная 12мм,ц/х 6мм, канилир. проволока 0,3мм KERN
  • Щетка кисточная 25мм,ц/х 6мм, канилир. проволока 0,3мм KERN
  • Кисточка для выпечки 158х40мм


Как отсортировать так:
  • Кисточка силиконовая 18,5 см Function Form Fiskars
  • Кисточка для теста 22,5 см KL40A09-08
  • Кисточка для выпечки 158х40мм
  • Щетка кисточная 12мм,ц/х 6мм, канилир. проволока 0,3мм KERN
  • Щетка кисточная 25мм,ц/х 6мм, канилир. проволока 0,3мм KERN
  • Флюс для пайки паяльная кислота с кисточкой 25мл REXANT
  • Клей секундный Супер Момент Профи плюс с кисточкой, 5г


Т.е. чем ближе ключевое слово к началу строки, тем выше вес.
Заранее благодарен!
  • Вопрос задан
  • 882 просмотра
Решения вопроса 1
@den2a Автор вопроса
Ключевой параметр min_hit_pos
Подробнее здесь
Как вариант:
$query = 'кисточ';

	try {
		$sp = new PDO('mysql:host=127.0.0.1;port=9306', '', '');
		$list = $sp->query("SELECT * FROM test1 WHERE MATCH('$query') OPTION ranker = expr('sum(4*lcs+100/(min_hit_pos)+bm25)')");
		
		while ( $row = $list->fetch(PDO::FETCH_ASSOC) ) { //Преобразуем результат в ассоциативный массив
			echo $row['id'] . ' - '; //id товара в mysql
			echo $row['weight'] . ' - '; //Релевантный вес
			echo $row['name'] . '<br/>'; //Название товара
		};
		
	} catch( PDOException $e) {
		echo "You have an error: ".$e->getMessage()."<br>";
		echo "On line: ".$e->getLine();
	}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
dllweb
@dllweb
Идите в сторону релевантности и весов популярности запросов, а потом уже сортируйте по этому индексу, ну как тут иначе?
Ответ написан
Комментировать
@BorisKorobkov
Web developer
В select добавьте отдельное поле "Короткий заголовок", которое на лету строится как 2 первых слова строки (если второе слово "для", то без него). Или не 2 слова, а вся строка до знака препинания, " для", " с".
И этому полю назначьте высокий вес.
Ответ написан
opium
@opium
Просто люблю качественно работать
Сортируйте отдельно в приложении
Ответ написан
Комментировать
valickSerjGe
@valickSerjGe
я Черт
В select добавьте отдельное поле "Короткий заголовок"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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