summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-08-29 09:34:30 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2017-08-29 09:34:30 +0200
commit34c8d5e74f40b9c0f546ca54164aa9b193dcf434 (patch)
tree2984da143214ce0b736b71485f0dd77b644f97e3 /container-search
parent6c5dc8f0bdabeec182ee4ebe566080f8a7ff072f (diff)
Handle that normalizing leads to an empty query
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java15
1 files changed, 8 insertions, 7 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java
index 3b9a03bb5da..02c8ecda60c 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/NormalizingSearcher.java
@@ -52,10 +52,12 @@ public class NormalizingSearcher extends Searcher {
}
protected void normalize(Query query, IndexFacts.Session indexFacts) {
- String oldQuery = (query.getTraceLevel() >= 2) ? query.getModel().getQueryTree().getRoot().toString() : "";
+ String oldQuery = (query.getTraceLevel() >= 2) ? query.getModel().getQueryTree().getRoot().toString() : null;
+
normalizeBody(query, indexFacts);
- if (query.getTraceLevel() >= 2)
- if (!(oldQuery.equals(query.getModel().getQueryTree().getRoot().toString()))) query.trace(getFunctionName(), true, 2);
+
+ if (query.getTraceLevel() >= 2 && ! query.getModel().getQueryTree().getRoot().toString().equals(oldQuery))
+ query.trace(getFunctionName(), true, 2);
}
private Query normalizeBody(Query query, IndexFacts.Session indexFacts) {
@@ -63,19 +65,18 @@ public class NormalizingSearcher extends Searcher {
Language language = query.getModel().getParsingLanguage();
if (root instanceof BlockItem) {
List<Item> rootItems = new ArrayList<>(1);
-
rootItems.add(root);
ListIterator<Item> i = rootItems.listIterator();
-
i.next();
normalizeBlocks(language, indexFacts, (BlockItem) root, i);
- query.getModel().getQueryTree().setRoot(rootItems.get(0));
+ if ( ! rootItems.isEmpty()) // give up normalizing if the root was removed
+ query.getModel().getQueryTree().setRoot(rootItems.get(0));
} else if (root instanceof CompositeItem) {
query.getModel().getQueryTree().setRoot(normalizeComposite(language, indexFacts, (CompositeItem) root));
}
return query;
}
-
+
private Item normalizeComposite(Language language, IndexFacts.Session indexFacts, CompositeItem item) {
if (item instanceof PhraseItem) {
return normalizePhrase(language, indexFacts, (PhraseItem) item);