Open pstoehr opened 8 years ago
The system relies on how the partners interpret the queries. So even if we formulate the query explicit, like the example above, the partner might behave unexpected. In this case Mendeley seems to interpret the query like a logical disjunction.
Thanks for this clarification!
Is this the reason why neither this query
{ "partnerList": [ { "systemId": "KIMPortal" } ], "numResults": 20, "contextKeywords": [ { "text": "Europa K\u00f6nig" } ], "origin": { "clientType": "Swift-Test-Client", "clientVersion": "0.21", "module": "OS X Prototype", "userID": "PDPS-WS2015" } } nor that one { "partnerList": [ { "systemId": "KIMPortal" } ], "numResults": 20, "contextKeywords": [ { "text": "K\u00f6nig", "isMainTopic": true }, { "text": "Europa", "isMainTopic": false } ], "origin": { "clientType": "Swift-Test-Client", "clientVersion": "0.21", "module": "OS X Prototype", "userID": "PDPS-WS2015" } }
doesn't return any result. By the way, we are not able to find any combination for 2 search phrases that returns a result.
Nevertheless, the web-front end (https://www.kgportal.bl.ch/sammlungen) returns results for the keywords "König Europa".
for this query you could retrieve results
(the query in that case would be (König OR Europa))
if you put two keywords into the query like in example 1 the query terms are conjunct in the case of KimPortal since it is considered as phrase. So the final query will be (König AND Europa) In the second case you consider König as main topic and Europe as subtopic this leads to the query (König) AND (Europa). Kim is more restrictive with the AND here in comparison to others. e.g. Mendeley
In general one of the main ideas of the maintopic field is, since we can normally easily file a result list with 10 or 20 results if all partners are used, gaining a higher precision. Like the example above, or the web frontend of Kim, the system is returning results but they are quite unspecific and often off topic. (Like https://www.kgportal.bl.ch/sammlungen#c45b060e-4761-aafb-5c88-88951b5d89ff or https://www.kgportal.bl.ch/sammlungen#b82e6ed7-4ef9-4a1a-36a0-96ab77d631a8)
just as example where the mainTopic makes sense:
"contextKeywords": [ { "text": "Napoleon", "isMainTopic": true }, { "text": "Frankreich", "isMainTopic": false }, { "text": "Schweiz", "isMainTopic": false }, { "text": "Helena", "isMainTopic": false } ] query: (Napoleon) AND (Frankreich OR Schweiz OR Helena) if you turn off the main topic for the keyword napoleon you will get a lot of results that are not related to the rest of the keywords
Thanks for this information.
As far as I can see the programmer of a client has to take into accout what functionalities are provided by which Data Provider.
Peter, definitely not. Because: 1) Data Provider might join or leave the federated recommender dynamically. 2) The data provider's search backend and thus, their query capabilities might change (e.g. elastic search instead of apache solr)
I know that the current solution is not optimal, but working around and optimizing for single data providers is of no use - one then might as well connect to the data provider directly.
thank you @chseifert, although you had more or less the same answer i was already in the process of answering. Therefore i post it anyway.
Actually the intension of the system is to provide most helpfull items to users. In a usual use case the client programmer should not care from which partner results a returned. Even further when the final source selection approaches are deployed, the system might remove providers from it's pool for certain queries. Selection of certain partners is only an addition feature that can be used, if needed in special cases, but it is not the main intension of the framework that partners are queried on it's own.
The main topic it self is an possibility for frontends to increase precision.
In the best of all possible world both of you are right, but ...
If you generate a query with the "Napoleon-data" Mendeley would return a result-set that seems to be something like "Napoleon OR Frankreich OR Schweiz OR Helena" and KimPortal one for "(Napoleon) AND (Frankreich OR Schweiz OR Helena)" (I hope I got it right)
Thus, when a user provides more that one key word, the data from the KimPortal result-set seems to be "more common" (or "less surprising") for an "average user" than the data from the Mendeley result-set. Based on that, our client might rank result-sets of "multi-keyword-recommendation" generated by KimPortal higher that the results of the same "mult-keyword-recommendation" from Mendeley (as the results from KimPortal are likely to be more specific).
And again: Yes, both of you are right when you mention that this ranking is based on a momentary survey, uses internal knowledge and might not be valid in "42 days". But currently such a heuristic helps us to "improve" the overall result-set.
And yes for the third time, both of you are right again! It would be brain-damaging-stupid not to use the EEXCESS-PP for fetching those data!
What you basically suggest for your client is a client-based result-set aggregation. Would be interesting to see how this turns out (especially in terms of user satisfaction). Conceptionally, this would be the job of the federated recommender - with the setting - that nothing is known about specific partners - and all analysis that you have been doing manually to find things out , would have to be done automatically without human intervention.
just to correct something here, i meant that in that specific case above Mendeley is interpreting the query like an OR query, but thats just in that case above where one search term is missing. In general Mendeley is highly sophisticated regarding their interpretation of the query and the ranking. If you take for example the query below and set the main topic field on the single contextKeywords randomly you will always get different result list returned.
{ "partnerList": [ { "systemId": "Mendeley" } ], "numResults": 20, "contextKeywords": [ { "text": "Napoleon", "isMainTopic": false }, { "text": "Frankreich", "isMainTopic": false }, { "text": "Schweiz", "isMainTopic": false }, { "text": "Helena", "isMainTopic": false }
] }
A recommendation with the contextKeywords-text entry "assdwefwnff" return an empty result list which is absolutely reasonable.
Changing the contextKeywords-text entry to "assdwefwnff halloween" give the following response: { "provider": "federated", "totalResults": 10, "partnerResponseState": [ { "systemID": "RijksMuseum", "success": true }, { "systemID": "Deutsche Digitale Bibliothek", "success": true }, { "systemID": "Europeana", "success": false, "errorMessage": "Waited too long for partner system 'Europeana' to respond 5023 ms " }, { "systemID": "Kierling", "success": true }, { "systemID": "KIMPortal", "success": true }, { "systemID": "Mendeley", "success": true }, { "systemID": "ZBW", "success": true } ], "queryID": "1468329700", "result": [ { "resultGroup": [
] }
It is not totally clear why the second query returns more results. Looking at the last result, the "generatingQuery" was "(assdwefwnff AND halloween)". As the recommendation for "assdwefwnff" returns an empty result list, it is unclear why the more specific recommendation for "(assdwefwnff AND halloween)" now returns some elements.