Сортировка массива строк на основе совпадения строк - PullRequest
0 голосов
/ 01 марта 2012

У меня есть объект JSON, содержащий несколько строк. У меня также есть строка соответствия. Теперь я хочу расположить объект строк на основе того, насколько близко (более) они совпадают со строкой соответствия.

Как это можно сделать с помощью Javascript.

Предположим, я искал Philips SHM6110U Headphone

После этого при поиске будет получен следующий результат.

[
    {
        "position": 12,
        "link": "http:\/\/www.talash.com\/buy-online-philips-shl5001-hi-fi-headphone-headband-headphone-india-product.html",
        "image": "http:\/\/staticus.talash.com\/product_images\/p\/092\/DM1573_1lg__52708_thumb.jpg",
        "prod": "Philips Shl5001 Hi Fi Headphone Headband Headphone",
        "price": "Rs. 1000"
    },
    {
        "position": 12,
        "link": "http:\/\/www.talash.com\/buy-online-philips-shl5000-hi-fi-headphone-headband-headphone-india-product.html",
        "image": "http:\/\/staticus.talash.com\/product_images\/n\/497\/DM1572_1lg__57945_thumb.jpg",
        "prod": "Philips Shl5000 Hi Fi Headphone Headband Headphone",
        "price": "Rs. 1030"
    }
]​

Теперь я должен отсортировать их в соответствии со строкой соответствия «Philips SHM6110U Headphone» и значением prod в формате JSON.

Подойдет алгоритм или пример исходного кода!

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Вы можете передать функцию сравнения в Array.prototype.sort .

var results = [
  {"position": 12,
    ...
   "prod": "Philips Shl5001 Hi Fi Headphone Headband Headphone",
    ...
  },
  {"position": 12,
    ...
   "prod": "Philips Shl5000 Hi Fi Headphone Headband Headphone",
    ...
  }
]​;

results.sort(function(a, b) {
  return a.prod < b.prod? -1 : a.prod == b.prod? 0 : 1;
});

Результатом будет массив, отсортированный по obj.prod значениям.

0 голосов
/ 05 марта 2012

Наконец, я делаю это, используя ряд критериев: -

  1. Индивидуальное сопоставление слов результата поиска и поискового запроса
  2. Дополнительные кредиты для полного соответствия результата и поискового запроса
  3. Часть длины всех слов, соответствующая общей длине результата поиска
  4. Дополнительные кредиты, если поисковый запрос появляется с индексом, который меньше половины общей длины результата поиска
  5. Ценовой фильтр для дальнейшего улучшения результата.

Вот окончательный результат

...