alessandrobenedetti commented on a change in pull request #129:
URL: https://github.com/apache/solr/pull/129#discussion_r644684545



##########
File path: 
solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
##########
@@ -1771,6 +1775,35 @@ public void testSplitOnWhitespace_Basic() throws 
Exception {
     assertThat(parsedquery, anyOf(containsString("((name:stigma | 
title:stigma))"), containsString("((title:stigma | name:stigma))")));
   }
 
+    @Test 
+    public void testQf_stringFieldWithSowFalse_shouldBuildSingleQueryClause() 
throws Exception
+    {
+        assertJQ(req("qf", "trait_ss", "defType", "edismax", "q", "multi 
term", "sow", "false"),
+            "/response/numFound==1", "/response/docs/[0]/id=='75'");
+
+        String parsedquery = getParsedQuery(
+            req("qf", "trait_ss", "q", "multi term", "defType", "edismax", 
"sow", "false", "debugQuery", "true"));
+        assertThat(parsedquery, anyOf(containsString("((trait_ss:multi 
term))")));

Review comment:
       Done!

##########
File path: 
solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
##########
@@ -1771,6 +1775,35 @@ public void testSplitOnWhitespace_Basic() throws 
Exception {
     assertThat(parsedquery, anyOf(containsString("((name:stigma | 
title:stigma))"), containsString("((title:stigma | name:stigma))")));
   }
 
+    @Test 
+    public void testQf_stringFieldWithSowFalse_shouldBuildSingleQueryClause() 
throws Exception
+    {
+        assertJQ(req("qf", "trait_ss", "defType", "edismax", "q", "multi 
term", "sow", "false"),
+            "/response/numFound==1", "/response/docs/[0]/id=='75'");
+
+        String parsedquery = getParsedQuery(
+            req("qf", "trait_ss", "q", "multi term", "defType", "edismax", 
"sow", "false", "debugQuery", "true"));
+        assertThat(parsedquery, anyOf(containsString("((trait_ss:multi 
term))")));
+    }
+
+    @Test
+    public void 
testQf_numericField_shouldBuildMultipleQueryClausesIndependentlyOfSow() throws 
Exception
+    {
+        assertJQ(req("qf", "foo_i", "defType", "edismax", "q", "101 102", 
"sow", "false"),
+            "/response/numFound==2", "/response/docs/[0]/id=='76'", 
"/response/docs/[1]/id=='77'");
+
+        String parsedquery = getParsedQuery(
+            req("qf", "foo_i", "q", "101 102", "defType", "edismax", "sow", 
"false", "debugQuery", "true"));
+        assertThat(parsedquery, anyOf(containsString("foo_i:[101 TO 101]"), 
containsString("foo_i:[102 TO 102]")));

Review comment:
       you are right, fixed!

##########
File path: solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
##########
@@ -1149,18 +1151,21 @@ protected Query getFieldQuery(String field, 
List<String> queryTerms, boolean raw
         return newFieldQuery
             (getAnalyzer(), field, queryText, false, 
fieldAutoGenPhraseQueries, fieldEnableGraphQueries, synonymQueryStyle);
       } else {
-        if (raw) {
+        if (raw) {// assumption: raw = false only when called from 
ExtendedDismaxQueryParser.getQuery()
           return new RawQuery(sf, queryTerms);
         } else {
           if (queryTerms.size() == 1) {
             return ft.getFieldQuery(parser, sf, queryTerms.get(0));
+          } else if(ft instanceof StrField){

Review comment:
       Should we then start a much more complex task i.e. "removal of StrField" 
to avoid such inconsistencies?
   We could try doing it in a back-compatible way, but ultimately I think the 
real issue is that we express text to be untokenized in the index in two ways 
with no apparent benefit but just inconsistencies ?

##########
File path: solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
##########
@@ -1149,18 +1151,21 @@ protected Query getFieldQuery(String field, 
List<String> queryTerms, boolean raw
         return newFieldQuery
             (getAnalyzer(), field, queryText, false, 
fieldAutoGenPhraseQueries, fieldEnableGraphQueries, synonymQueryStyle);
       } else {
-        if (raw) {
+        if (raw) {// assumption: raw = false only when called from 
ExtendedDismaxQueryParser.getQuery()
           return new RawQuery(sf, queryTerms);
         } else {
           if (queryTerms.size() == 1) {
             return ft.getFieldQuery(parser, sf, queryTerms.get(0));
+          } else if(ft instanceof StrField){

Review comment:
       Should we then start a much more complex task i.e. "removal of StrField" 
to avoid such inconsistencies?
   We could try doing it in a back-compatible way, but ultimately I think the 
real issue is that we express text to be untokenized in the index in two ways 
with no apparent benefit but just inconsistencies ?
   i.e.
   StrField could be an alias rather than a separate Field Type




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to