SQL - ранг или порядок по релевантности человека - PullRequest
0 голосов
/ 18 декабря 2018

Глядя на реализацию ранжирования / упорядочения по функциям, которые ранжируют продукты в соответствии с тем, как мы, люди, считаем их релевантными, а не с тем, что компьютер считает релевантным.В настоящее время у меня есть sql statment

select MATCH(productName) AGAINST('xyz' IN NATURAL LANGUAGE MODE) AS relevant...
... ORDER BY relevant DESC

Похоже, что это хорошо работает, в отношении того, сколько раз «ключевое слово» появляется в наборе записей, но это очень «Yay» или «Nay», если вы понимаете, что я имею в виду.

Однако, ища «компьютерную консоль» (в маловероятном случае), я хотел бы видеть «Playstation», «xBox», «Nintendo», хотя я никогда не вводил эти ключевые слова в поле поиска.

Поиск «лестницы» Я лично ожидал бы увидеть лестницы для доступа по высоте, а не настольную игру «змеи и лестницы» или одежду с паттерном лестницы.

Некоторые с «Железом» я не намоталожидайте, что на первой странице появятся «постельные принадлежности железного человека».

Существует ли промышленный способ достижения такой цели, или у кого-нибудь есть идеи, как этого можно достичь.то есть вторая таблица с ключевыми словами / поисковыми терминами, соответствующими product_id.

С уважением

1 Ответ

0 голосов
/ 21 декабря 2018

Возможно, это не совсем та же ситуация, что и у вас, но она может вам помочь.

Я разработал систему результатов поиска на основе релевантности для большой системы управления контентом, которую я разработал на своей работе.

Контент содержит заголовок, контент и поле скрытых ключевых слов (слова, которые должны использоваться для поиска, но не включаются в заголовок или контент).[есть намного больше полей, но эти три пригодны для демонстрации концепции]

Когда контент добавляется, он индексируется: удаляются некоторые не буквенно-цифровые символы, каждое слово ставится в скобки (т.е.Педагог, образование и т. д. индексируются как одно и то же слово), некоторые слова преобразуются в другое на основе некоторых внутренних правил, а затем все они сохраняются в индексе.

Когда поиск выполняется, система выполняетто же самое, что и выше для каждого ключевого слова (удаляет нежелательные символы, основание, преобразование на основе внутренних правил).

Затем система получает список содержимого, в котором есть каждое из проанализированных поисковых слов в любом из этих полей.

Затем мой код анализирует каждый из подходящих результатов: сначала он ищет все ключевые слова, последовательно существующие в одном из полей;и если он не находит поисковую фразу, он затем итеративно [составленное слово] ищет меньшие группы ключевых слов, пока не будет найден (т. е. если введено 4 поисковых слова, он сначала пробует все 4, затем 3, затем 2, затем 1, еслине все они найдены вместе)

Исходя из того, сколько ключевых слов было найдено последовательно, система применяет оценку к результату поиска.Более высокие оценки даются в зависимости от того, были ли найдены ключевые слова в поле заголовка, содержания или ключевых слов (это потребовало некоторой тонкой настройки), а также от того, насколько близко они были найдены близко к началу поля.

Результаты затем передаются клиенту на основе этого показателя.

Система работает очень хорошо в нашей ситуации, особенно часть сгруппированных ключевых слов дает хорошие результаты.

Вы можете использоватьаналогичная система в вашей ситуации.При поиске «ladder» перед «Snakes and Ladders Game» можно было бы заказать такой продукт, как «Ladder - extra large».

Для «computer console» можно добавить подобные термины в поле скрытых ключевых слов.

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

...