Я стучал головой о стену, пытаясь решить эту проблему ... В принципе, у меня есть объект со структурой, подобную этой:Расширенный объект сортировки
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, являющийся истинным, несет наибольший вес (самый верхний), за которым следует количество вхождений в копии страницы (matches.copy).
Результаты, имеющие match.h1 == true, должны отображать следующий в представлении результатов, отсортированный по количеству вхождений в копии страницы (matches.copy).
Результаты с match.title и matches.h1, которые являются ложными, сортируются по совпадениям. В порядке убывания.
Возможно ли это с текущей структурой объекта? Или мне нужно разделить его и перекрестно ссылаться на каждый поднабор? Г! Это так рано, а кофе не работает :(
EDIT:. Преобразованный результат установлен массив объектов Новая структура:
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, что кажется многообещающим, но у меня нет опыта его использования. Не уверен, что это правильное направление или нет.
Сделать массив A объектов, определить функцию сортировки sf, вызвать функцию A.sort (sf). – jgroenen