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

[jira] [Comment Edited] (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=16227006#comment-16227006 ] 

Mike Sokolov edited comment on LUCENE-8019 at 10/31/17 3:45 PM:
----------------------------------------------------------------

I have a WIP impl of this that walks the Scorer tree, advancing and checking docID(). The code is definitely cleaner and less intrusive than the previous patch. However, I ran into an issue since the Scorer tree doesn't really mirror the original Query tree. A simple example is a query like

  {quote}{{*:* -foo:1}}{quote}

This gets scored using a ReqExclScorer which has only a single child corresponding to the MatchAllQuery and can't really be used to discover if a mis-match is due to matching the foo:1 term query.

So I think I need to walk the tree of Weights, as explain() does.


was (Author: sokolov):
I have a WIP impl of this that walks the Scorer tree, advancing and checking docID(). The code is definitely cleaner and less intrusive than the previous patch. However, I ran into an issue since the Scorer tree doesn't really mirror the original Query tree. A simple example is a query like

    *:* -foo:1

This gets scored using a ReqExclScorer which has only a single child corresponding to the MatchAllQuery and can't really be used to discover if a mis-match is due to matching the foo:1 term query.

So I think I need to walk the tree of Weights, as explain() does.

> 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