diff --git a/src/java/org/apache/solr/handler/component/HighlightComponent.java b/src/java/org/apache/solr/handler/component/HighlightComponent.java index 7aa65705690..c04e1168630 100644 --- a/src/java/org/apache/solr/handler/component/HighlightComponent.java +++ b/src/java/org/apache/solr/handler/component/HighlightComponent.java @@ -17,6 +17,7 @@ package org.apache.solr.handler.component; +import org.apache.lucene.search.Query; import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.HighlightParams; @@ -62,26 +63,32 @@ public class HighlightComponent extends SearchComponent defaultHighlightFields = params.getParams(CommonParams.DF); } - if(rb.getHighlightQuery()==null) { + Query highlightQuery = rb.getHighlightQuery(); + if(highlightQuery==null) { if (rb.getQparser() != null) { try { - rb.setHighlightQuery( rb.getQparser().getHighlightQuery() ); + highlightQuery = rb.getQparser().getHighlightQuery(); + rb.setHighlightQuery( highlightQuery ); } catch (Exception e) { throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e); } } else { - rb.setHighlightQuery( rb.getQuery() ); + highlightQuery = rb.getQuery(); + rb.setHighlightQuery( highlightQuery ); } } - NamedList sumData = highlighter.doHighlighting( - rb.getResults().docList, - rb.getHighlightQuery().rewrite(req.getSearcher().getReader()), - req, defaultHighlightFields ); - - if(sumData != null) { - // TODO ???? add this directly to the response? - rb.rsp.add("highlighting", sumData); + // No highlighting if there is no query -- consider q.alt="*:* + if( highlightQuery != null ) { + NamedList sumData = highlighter.doHighlighting( + rb.getResults().docList, + highlightQuery.rewrite(req.getSearcher().getReader()), + req, defaultHighlightFields ); + + if(sumData != null) { + // TODO ???? add this directly to the response? + rb.rsp.add("highlighting", sumData); + } } } } diff --git a/src/test/org/apache/solr/highlight/HighlighterTest.java b/src/test/org/apache/solr/highlight/HighlighterTest.java index 6610044999a..a1777bf1fed 100755 --- a/src/test/org/apache/solr/highlight/HighlighterTest.java +++ b/src/test/org/apache/solr/highlight/HighlighterTest.java @@ -148,6 +148,7 @@ public class HighlighterTest extends AbstractSolrTestCase { args.put("hl", "true"); args.put("hl.fl", "tv_text"); args.put("qf", "tv_text"); + args.put("q.alt", "*:*"); TestHarness.LocalRequestFactory sumLRF = h.getRequestFactory( "dismax",0,200,args); @@ -159,7 +160,12 @@ public class HighlighterTest extends AbstractSolrTestCase { "//lst[@name='highlighting']/lst[@name='1']", "//lst[@name='1']/arr[@name='tv_text']/str" ); - + + // try the same thing without a q param + assertQ("Should not explode...", // q.alt should return everything + sumLRF.makeRequest( new String[] { null } ), // empty query + "//result[@numFound='1']" + ); }