About first query, you have a negative query telling the searcher to give only results _NOT_ containing "name_s:a". From that result list you want only results of "age_i:10". Boolean table for OR is: 0 OR 0 = 0 1 OR 0 = 1 0 OR 1 = 1 1 OR 1 = 1 You get one result.
About second query your "parsedquery" says you _must_ have id:1 OR id:2 (where you will get both) but _must_ _not_ have anything with "name_s:a". But you have something with "name_s:a", so you get no results. Regards Bernd Am 08.04.20 um 11:53 schrieb slly: > My default query operator is OR.There are two pieces of data in the index: > { "id":"1", "name_s":"a", "age_i":10, "_version_":1663396766955864064}, { > "id":"2", "name_s":"b", "age_i":10, "_version_":1663396767058624512}] } > > > 1. -name_s:a OR age_i:10 # I think two pieces of data should be > returned, but only one > > "rawquerystring":"-name_s:a age_i:10", "querystring":"-name_s:a age_i:10", > "parsedquery":"-name_s:a IndexOrDocValuesQuery(age_i:[10 TO 10])", > "parsedquery_toString":"-name_s:a age_i:[10 TO 10]", > "QParser":"LuceneQParser", > > > > 2. id:("1" "2") AND (-name_s:a) # I think one data should be returned, but > 0 data > > "rawquerystring":"id:(\"1\" \"2\") AND (-name_s:a)", "querystring":"id:(\"1\" > \"2\") AND (-name_s:a)", "parsedquery":"+(id:1 id:2) +(-name_s:a)", > "parsedquery_toString":"+(id:1 id:2) +(-name_s:a)", "QParser":"LuceneQParser", > > > > > > At 2020-04-08 17:46:37, "Bernd Fehling" <bernd.fehl...@uni-bielefeld.de> > wrote: >> What is debugQuery telling you about: >> - "rawquerystring" >> - "querystring" >> - "parsedquery" >> - "parsedquery_toString" >> - "QParser" >> >> Also what is your default query operator, AND or OR? >> This is what matters for your second example with id:("1" "2") >> It could be id:("1" AND "2") or id:("1" OR "2") . >> >> Regards >> Bernd >> >> Am 08.04.20 um 11:30 schrieb slly: >>> Thanks Bernd for your reply. >>> I run the query on the Solr Web UI in Solr 7.3.1/7.7.2, the screenshot of >>> my execution results is as follows, I don't understand whether there is a >>> grammatical error ? >>> 1. -name_s:a OR age_i:10 >>> >>> 2. id:("1" "2") AND (-name_s:a) >>> >>> >>> At 2020-04-08 16:33:20, "Bernd Fehling" <bernd.fehl...@uni-bielefeld.de> >>> wrote: >>>> Looks correct to me. >>>> >>>> You have to obey the level of the operators and the parenthesis. >>>> Turn debugQuery on to see the results of parsing of your query. >>>> >>>> Regards >>>> Bernd >>>> >>>> Am 08.04.20 um 09:34 schrieb slly: >>>>> >>>>> >>>>> If the following query is executed, the result is different: >>>>> >>>>> >>>>> id:("1" "2") AND (-name_s:a) --> numFound is 0 >>>>> >>>>> >>>>> id:("1" "2") AND -(name_s:a) --> numFound is 1 >>>>> >>>>> >>>>> >>>>> At 2020-04-08 14:56:26, "slly" <sll...@126.com> wrote: >>>>>> Hello Folks, >>>>>> We are using Solr 7.3.1, I write the following two lines of data into >>>>>> collection: >>>>>> id, name_s, age_i >>>>>> 1, a, 10 >>>>>> 2, b, 10 >>>>>> Use the following query syntax: >>>>>> -name_s:a OR age_i:10 >>>>>> >>>>>> >>>>>> I think we should return two pieces of data, but actually only one piece >>>>>> of data: >>>>>> id, name_s, age_i >>>>>> 2, b, 10 >>>>>> >>>>>> >>>>>> Did I get it wrong? Looking forward to some valuable suggestions. >>>>>> Thanks. >>>