You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Robert Muir (JIRA)" <ji...@apache.org> on 2017/10/26 18:07:00 UTC

[jira] [Commented] (LUCENE-8019) Add a root failure cause to Explanation

    [ https://issues.apache.org/jira/browse/LUCENE-8019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16220918#comment-16220918 ] 

Robert Muir commented on LUCENE-8019:
-------------------------------------

I don't like the idea of boolean query's logic being shoved into the explanation class. This should not be in explanation, it should be generic.

I don't think explanation class should be complicated by matching/non-matching stuff. If we want to improve the booleanweight impl (such as the strings it puts in there), that is one thing, but its not the responsibility of explanation to do this.

explain() is supposed to be about scoring, not matching:

{noformat}
Returns an Explanation that describes how doc scored against query.
{noformat}

We should keep it focused on that, without adding a lot of complexity related to "matching" which is not its job. it already has enough challenges trying to explain scores...

> Add a root failure cause to Explanation 
> ----------------------------------------
>
>                 Key: LUCENE-8019
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8019
>             Project: Lucene - Core
>          Issue Type: New Feature
>            Reporter: Mike Sokolov
>         Attachments: LUCENE_8019.patch
>
>
> If you need to analyze the root cause of a query's failure to match some document, you can use the Weight.explain() API. If you want to do some gross analysis of a whole batch of queries, say scraped from a log, that once matched, but no longer do, perhaps after some refactoring or other large-scale change, the Explanation isn't very good for that. You can try parsing its textual output, which is pretty regular, but instead I found it convenient to add some boolean structure to Explanation, and use that to find failing leaves on the Explanation tree, and report only those.
> This patch adds a "condition" to each Explanation, which can be REQUIRED, OPTIONAL, PROHIBITED, or NONE. The conditions correspond in obvious ways to the Boolean Occur, except for NONE, which is used to indicate a node which can't be further decomposed. It adds new Explanation construction methods for creating Explanations with conditions (defaulting to NONE with the existing methods).
> Finally Explanation.getFailureCauses() returns a list of Strings that are the one-line explanations of the failing queries that, if some of them had succeeded, would have made the original overall query match.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org