Я хочу понять логику или алгоритм, лежащий в основе функции поиска в Magento Connect, когда для параметра «Сортировать по» в поиске «Уточненный» задана сортировка по Relavence
Я хочу понять логику или алгоритм, лежащий в основе функции поиска в Magento Connect, когда для параметра «Сортировать по» в поиске «Уточненный» задана сортировка по Relavence
Ответы:
Я бы предположил, что поиск реализован с использованием индекса MySQL FULLTEXT.
Вот цитата из официальной документации MySQL относительно того, как работает этот индекс:
Возвращенные строки автоматически сортируются с наибольшей релевантностью. Значения релевантности являются неотрицательными числами с плавающей точкой. Нулевая релевантность означает отсутствие сходства. Релевантность вычисляется на основе количества слов в строке, количества уникальных слов в этой строке, общего количества слов в коллекции и количества документов (строк), которые содержат конкретное слово.
В качестве доказательства этого вы можете попытаться выполнить поиск на веб-сайте Magento Connect, используя следующие условия поиска:
Для первого семестра первыми результатами являются модули с названиями:
Для второго:
Для последнего:
Как вы можете видеть, во всех случаях первые элементы имеют более одного вхождения поискового термина в заголовке, поэтому их релевантность выше.
Похоже, именно так работает поиск в Magento Connect.
Хотя Magento.com построен на Drupal, Magento Connect, похоже, использует сам Magento, по крайней мере, в качестве основы.
magento-connect/catalogsearch/result/?q=TERM
используемые файлы JavaScript:
пути к файлам CSS, таким как http://www.magentocommerce.com/magento-connect/skin/frontend/enterprise/connect/css/base.css с лицензионным заголовком, содержащим:
* @category design
* @package enterprise_connect
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://www.magentocommerce.com/license/enterprise-edition
Получив эту информацию, мы можем согласиться с тем, что поиск работает так же, как в Magento Enterprise. Теперь есть несколько возможностей:
Как вы можете видеть, если вы ищете произвольные комбинации поисковых терминов, это не LIKE
поиск по умолчанию, OR
который все ненавидят. Таким образом, либо полнотекстовый поиск, который упорядочен по релевантности по умолчанию, как предложено @alex_b, либо поиск Solr модуля Enterprise_Search, для которого мне, вероятно, не разрешено раскрывать детали.