Hi, Just a little note to lt you know that I have been able to build discover on my debian-stable (outside Neon) and, given some files copying, I've been able to reproduce the issue I want to look at. (took me a few nights of compilation and (debian) dependencies tracking though :-) )
Could one send a few congratulations to the people who have improved kdesrc-build ? A year or more ago I've tried to build things on debian stable and had to give up after three days because it didn't work. Now it does and that's *very* nice (and impressive). stF On vendredi 10 avril 2020 8 h 59 min 29 s CEST S. Champailler wrote: > Thx for your answer. But I'm afradi I don't fully understand it. > > > We do get sorted feeds that at > > the moment we're merging naively. > > Ok, that's the I way I understand the problem as well. > > > One thing to check first of all is to make sure that the exact > > resource you're fetching is already being provided first at its own > > feed. > > Let's have an example. Imagine we have 3 feeds : A,B,C. > In each of these, we have 3 resources : a1, a2, a3; b1,b2,b3; c1,c2,c3. They > have names and descriptions (separated by a dash; a star indicates when the > titanium word is present): > > a1* = TitaddOns - An extension to Titanium > a2* = The titanium engine - lorem ipsum ... > a3 = plasma - lorem ipsum ... > b1 = konqueror - lorem ipsum ... > b2 = mozilla - lorem ipsum ... > b3 = dillo - lorem ipsum ... > c1* = titanium - lorem ipsum ... > c2* = titanium italics - not to confuse with titanium > c3* = titanium black - lorem ipsum ... > > The search string in Discover is : "titanium". I assume it's a single word. > > I assume the content providers will return : a1, c1, c2, a2, c3 (in no > particular order; for example a content provider might not sort, may take > long to answer, etc). Basically, what happened in this step is just a > filtering, no sorting. I assume that filtering is based on the presence of > the search term in the name of the resource, or in its description. The > filtering is done at the provider level because if it wasn't, then we'd > have to ask the complete list of resources of each content providers which > could potentially be a lot. > > Now that the filtering as occurred, we can sort by relevancy. That sort is > done entirely in Discover because "relevancy" makes sense only in the UI of > discover. > > I define a relevancy score : > - 1 = The search term is the only term in the name > - 2 = The search term is present in the name > - 3 = The search term is present in the description > > With that in mind, I sort by descending scores and, if scores are equal, I > sort alphabetically on names : > > c1* = titanium - lorem ipsum ... > a2* = The titanium engine - lorem ipsum ... > a1* = TitaddOns - An extension to Titanium > c3* = titanium black - lorem ipsum ... > c2* = titanium italics - not to confuse with titanium > > All the information needed to do that sort is available in Discover itself. > > Now, it's perfectly clear that scores don't answer all the questions. Having said that, I get back at your comment : > > One thing to check first of all is to make sure that the exact > > resource you're fetching is already being provided first at its own > > feed. > > I don't understand : > > - Do you mean that, when the relevancy ordering doesn't discriminate enough, > we should preserve the order of the contents provider ? c1, a2, a1, c2, c3 > ? > > - do you mean that we should leave the search results grouped by feed and > just sort the feeds separately : c1,c2,c3,a2,a1 ? > > or even something else ? > > Again, my point is that discover does the sort, totally irrelevant of how > the content providers order their stuff... In that case, I'd look in the > ResourcesProxyModel of Discover and order things there (with something like > the lessThan method). > > Thanks for your time :-) > > Stéphane > > > Le 9 avril 2020 à 22:36, Aleix Pol <aleix...@kde.org> a écrit : > > > > On Thu, Apr 9, 2020 at 2:49 PM S. Champailler <schampail...@skynet.be> wrote: > > > Hello m-l, Nate, > > > > > > First thanks for the answer, it gives much needed information. > > > > > > I investigated the code further. What Nate says seems > > > to be right. Discover uses a KNewStuff backend, which > > > in turn uses Attica. > > > > > > Now, the thing is, the sorting order is passed from KNewStuff > > > to Attica. As Attica ends up (REST) calling a provider (if I > > > got that well), the sort is done by that provider... > > > > > > So, although we're interested in the sort order which is > > > visible in Discover, the sort is actually done in the > > > providers, far away from Discover. > > > > > > Now, since Discover aggregates results from several providers, > > > I'd say that the responsibility for the sort order must be in > > > Discover since it has to sort and to prioritize the results > > > from the various provider (that is, it's Discover which has > > > to decide what package/theme/newstuff/... is most relevant > > > to the user who started the search). > > > > > > But still the "relevancy" aspect of it stays beyond my > > > understanding. How is that defined ? > > > > > > Does this make sense ? > > > > > > I ask that for two reasons : > > > > > > 1/ it's an indirect way to validate I understand the way > > > > > > Discover works > > > > > > 2/ I make sure I won't change things that will lead to > > > > > > architectural dead ends... (I love to give some time > > > to KDE, but that time is not exactly plenty :-) ) > > > > > > Thanks ! > > > > > > Stéphane > > > > > > > Le 8 avril 2020 à 18:07, Nate Graham <n...@kde.org> a écrit : > > > > > > > > > > > > See https://bugs.kde.org/show_bug.cgi?id=407588. This was supposed to > > > > have been fixed in AppStream itself, at least for apps. And I can > > > > confirm the fix with the latest version of APpStream--again, at least > > > > for apps. > > > > > > > > However I can see that the problem is still present for non-apps, such > > > > as the "Titanium" GTK2 theme, where I can reproduce the issue, as you > > > > indicate. Looks like the sorting may need to be adjusted in the KNS > > > > backend specifically, or elsein the KNewStuff framework itself. > > > > > > > > Nate > > > > > > > > On 4/8/20 3:10 AM, S. Champailler wrote: > > > > > Hello Aleix, hello KDE dev's, <mailto:aleix...@kde.org> > > > > > > > > > > I wanted to modify Discover a bit. Here's the thing : > > > > > > > > > > In KDE Neon, I run Discover. I search for a package named > > > > > "Titanium". > > > > > The result list has Titanium and some other packages in it (which is > > > > > fine). However, the first item in that list is not named Titanium at > > > > > all > > > > > (I guess it's a match based, say, on the description). > > > > > > > > > > I'd like to modify the sort order so that if a package has an exact > > > > > name > > > > > match, then it appears on top of the search results. > > > > > > > > > > I've already looked at the code (and built it !)) and seen that the > > > > > current sort is determined by the m_sortByRelevancy boolean. It > > > > > seems to > > > > > me that when that boolean is True, then no specific sort happens; > > > > > not > > > > > 100% sure. > > > > > > > > > > Before going any further, I'd like to make sure my idea doesn't > > > > > contradict some of the initial design of Discover. So, does it ? > > > > > > > > > > Best regards, > > > > > > > > > > Stéphane > > > > Hi, > > Yes, your assessment makes sense. It could make sense to better sort > > the different feeds as we receive them. We do get sorted feeds that at > > the moment we're merging naively. > > > > One thing to check first of all is to make sure that the exact > > resource you're fetching is already being provided first at its own > > feed. If that's not the case this would be something to address first. > > > > If it's first but gets buried down, we should look into it, I'd > > happily help you there. > > > > Cheers! > > Aleix