Я бьюсь головой о стену, пытаясь решить это ... В основном, у меня есть объект со структурой, подобной этой:
results = {
1 : {
url : '/',
matches: {
title : true,
h1 : false,
copy : 2
}
},
2 : {
url : '/?id=2',
matches: {
title : true,
h1 : true,
copy : 0
}
},
3 : {
url : '/id=3',
matches: {
title : false,
h1 : false,
copy : 6
}
}
}
Это набор результатов из пользовательскогопоиск.Мне нужны результаты, чтобы иметь вес для релевантности на основе совпадений в объектах.Результаты должны быть отсортированы следующим образом:
Результаты с match.title == true являются главными результатами.Внутри этого подмножества match.h1, являющийся истинным, несет наибольший вес (самый верхний), за которым следует число вхождений в копии страницы (match.copy).
Результаты, имеющие совпадения .h1== true должны отображаться далее в представлении результатов, отсортированном по количеству вхождений в копии страницы (match.copy).
Результаты как с match.title, так и с match.h1будучи ложными, сортируются в match.copy, в порядке убывания.
Это выполнимо с текущей структурой объекта?Или мне нужно разделить его и дать перекрестную ссылку на каждое подмножество?Г!Это так рано, и кофе не работает: (
РЕДАКТИРОВАТЬ: Преобразованный набор результатов в массив объектов. Новая структура:
results = [
{ pageid: 1, url: '/', matches: { title: true, h1: false, copy: 2 } },
{ pageid: 2, url: '/?id=2', matches: { title: true, h1: true, copy: 0 } },
{ pageid: 3, url: '/?id=3', matches: { title: false, h1: false, copy: 6 } }
]
Сортировка по-прежнему ускользает от меня. Я раньше делал простые сортировки, но ничего в этом роде. Я сталкивался с LINQ, который кажется многообещающим, но у меня нет опыта его использования. Не уверен, что это верное направление или нет.