apache / apache/lucene

Incorrect behaviour of MultiFieldQueryNodeProcessor when default operator is 'AND' [LUCENE-3355]

Open
#4,428 1 comment 0 reactions 0 assignees View on GitHub
affects-version:3.3 legacy-jira-priority:Major module:queryparser type:bug
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

StandardQueryNodeProcessorPipeline runs MultiFieldQueryNodeProcessor before GroupQueryNodeProcessor.

MultiFieldQueryNodeProcessor, if it encounters a node with no field, will do this:

```Java
return new GroupQueryNode(new BooleanQueryNode(children));
```

GroupQueryNodeProcessor comes along later on, sees that no operator is specified, so it applies the default operator, which, if set to 'AND', results in:

```Java
+properties:text +text:text
```

Which I don't think matches the intent of the multi-field processor.

---
Migrated from [LUCENE-3355](https://issues.apache.org/jira/browse/LUCENE-3355) by Trejkaz, updated Jan 23 2014

Contributor guide

Open the contributing guide

Research direction

Start with StandardQueryNodeProcessorPipeline and inspect the interaction between MultiFieldQueryNodeProcessor and GroupQueryNodeProcessor when a node has no field. Reproduce the query with the default operator set to AND and verify that the resulting query matches the intended multi-field behavior without the unintended operator application.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
search
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.