r1467 - trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
Author: bpoussin Date: 2012-04-06 11:47:10 +0200 (Fri, 06 Apr 2012) New Revision: 1467 Url: http://nuiton.org/repositories/revision/wikitty/1467 Log: Anomalie fix #2053 Error when we try to search containsAll or containsOne with empty collection Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java =================================================================== --- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-04-05 16:11:56 UTC (rev 1466) +++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-04-06 09:47:10 UTC (rev 1467) @@ -318,17 +318,21 @@ @Override public boolean visitEnter(ContainsAll o) { - String element2solr = element2solr(o.getElement()); + List<String> values = evalConditionValueAsList(o.getValues()); + if (values.size() == 0) { + solrQuery += "( *:* - *:* )"; // false / rien + } else { + String element2solr = element2solr(o.getElement()); - solrQuery += element2solr + ":("; + solrQuery += element2solr + ":("; - String sep = ""; - for(String e : evalConditionValueAsList(o.getValues())) { - solrQuery += sep + fixSolrBug(element2solr, e); - sep = " AND "; + String sep = ""; + for(String e : values) { + solrQuery += sep + fixSolrBug(element2solr, e); + sep = " AND "; + } + solrQuery += ")"; } - solrQuery += ")"; - return false; } @@ -345,15 +349,20 @@ @Override public boolean visitEnter(ContainsOne o) { - String element2solr = element2solr(o.getElement()); - - solrQuery += element2solr + ":("; - String sep = ""; - for(String e : evalConditionValueAsList(o.getValues())) { - solrQuery += sep + fixSolrBug(element2solr, e); - sep = " OR "; + List<String> values = evalConditionValueAsList(o.getValues()); + if (values.size() == 0) { + solrQuery += "( *:* - *:* )"; // false / rien + } else { + String element2solr = element2solr(o.getElement()); + + solrQuery += element2solr + ":("; + String sep = ""; + for(String e : values) { + solrQuery += sep + fixSolrBug(element2solr, e); + sep = " OR "; + } + solrQuery += ")"; } - solrQuery += ")"; return false; }
participants (1)
-
bpoussin@users.nuiton.org