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

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

Yes perhaps we could instead add sugar to IndexSearcher to "debug" a query via 
getChildren? If we are going to keep the getChildren api, why not at least 
allow it to help us :). Scorer visitors already record the relationship in the 
graph and similar to explain() you can simply advance() a scorer to a doc and 
then visit the scorer tree to maybe assist in debugging? 

Because you can always climb up a Scorer to its Weight via a getter method, it 
may be possible to incorporate score's explanation in the same output, but I 
think they may be separate use-cases. 

In general I think explain should work for end-users and debugging at that low 
level is more of a developer task.

> 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to