lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jochen Barth <ba...@ub.uni-heidelberg.de>
Subject q.op=AND vs default (q.op=OR)
Date Wed, 04 Dec 2019 11:39:10 GMT
Dear reader, I'm using solr 8.1.1.

I'm trying to switch from q.op=OR to q.op=AND, because of the parser I 
generate the queries for solr is somewhat more simple to develop with 
q.op=AND.

but the new query is returning less hits;

I have shortened the query string for better readability; _g_up stands 
for »from=id to=parent_ids«, _g_dn stands for »from=parent_ids to=id«,

_tft stands for »-type_s:multivolume_work -type_s:periodical 
-type_s:issue -type_s:journal«

and I have dropped some lenghty query terms (e. g. text_tei_ft, 
text_abstract_ft, meta_title_txt, meta_name_txt, ...) (for readability)

here the original query without q.op=AND

q=_query_:"{!graph _g_up}filter(+((_query_:\"{!graph 
_g_dn}meta_subject_txt:X meta_shelflocator_txt:X\" _query_:\"{!graph 
traversalFilter=\\\"class_s:meta _tft\\\" _g_up}text_ocr_ft:X 
text_pdf_ft:X\") (_query_:\"{!graph _g_dn}meta_subject_txt:X 
meta_shelflocator_txt:X\" _query_:\"{!graph 
traversalFilter=\\\"class_s:meta _tft\\\" _g_up}text_ocr_ft:X 
text_pdf_ft:X\") ) +class_s:meta )"

here the new query with q.op=AND:

q=_query_:"{!graph _g_up}filter(((_query_:\"{!graph 
_g_dn}meta_subject_txt:X OR meta_shelflocator_txt:X\" OR 
_query_:\"{!graph traversalFilter=\\\"class_s:meta _tft\\\" 
_g_up}text_ocr_ft:X OR text_pdf_ft:X\") OR (_query_:\"{!graph 
_g_dn}meta_subject_txt:X OR meta_shelflocator_txt:X\" OR 
_query_:\"{!graph traversalFilter=\\\"class_s:meta _tft\\\" 
_g_up}text_ocr_ft:X OR text_pdf_ft:X\") ) class_s:meta )"


for comparison, the whole (unshortened) query as by debug=query from solr;

whitout q.op=AND:

# parsedquery: "GraphQuery([[filter(+(([[meta_title_txt:\"h schliemann\" 
meta_name_txt:\"h schliemann\" meta_subject_txt:\"h schliemann\" 
meta_shelflocator_txt:\"h 
schliemann\"],parent_ids=id][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false]

[[meta_title_txt:\"h schliemann\" meta_name_txt:\"h schliemann\" 
text_ocr_ft:\"h schliemann\" text_heidicon_ft:\"h schliemann\" 
text_watermark_ft:\"h schliemann\" text_catalogue_ft:\"h schliemann\" 
text_index_ft:\"h schliemann\" text_tei_ft:\"h schliemann\" 
text_abstract_ft:\"h schliemann\" text_pdf_ft:\"h 
schliemann\"],id=parent_ids] [TraversalFilter: class_s:meta 
-type_s:multivolume_work -type_s:periodical -type_s:issue 
-type_s:journal][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false]) 
([[meta_title_txt:\"henry schliemann\" meta_name_txt:\"henry 
schliemann\" meta_subject_txt:\"henry schliemann\" 
meta_shelflocator_txt:\"henry 
schliemann\"],parent_ids=id][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false]

[[meta_title_txt:\"henry schliemann\" meta_name_txt:\"henry schliemann\" 
text_ocr_ft:\"henry schliemann\" text_heidicon_ft:\"henry schliemann\" 
text_watermark_ft:\"henry schliemann\" text_catalogue_ft:\"henry 
schliemann\" text_index_ft:\"henry schliemann\" text_tei_ft:\"henry 
schliemann\" text_abstract_ft:\"henry schliemann\" text_pdf_ft:\"henry 
schliemann\"],id=parent_ids] [TraversalFilter: class_s:meta 
-type_s:multivolume_work -type_s:periodical -type_s:issue 
-type_s:journal][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false])) 
+class_s:meta)],id=parent_ids][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false])"

with q.op=AND:

# parsedquery: "+GraphQuery([[+filter(+(([[meta_title_txt:\"h 
schliemann\" meta_name_txt:\"h schliemann\" meta_subject_txt:\"h 
schliemann\" meta_shelflocator_txt:\"h 
schliemann\"],parent_ids=id][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false]

[[meta_title_txt:\"h schliemann\" meta_name_txt:\"h schliemann\" 
text_ocr_ft:\"h schliemann\" text_heidicon_ft:\"h schliemann\" 
text_watermark_ft:\"h schliemann\" text_catalogue_ft:\"h schliemann\" 
text_index_ft:\"h schliemann\" text_tei_ft:\"h schliemann\" 
text_abstract_ft:\"h schliemann\" text_pdf_ft:\"h 
schliemann\"],id=parent_ids] [TraversalFilter: +class_s:meta 
-type_s:multivolume_work -type_s:periodical -type_s:issue 
-type_s:journal][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false]) 
([[meta_title_txt:\"henry schliemann\" meta_name_txt:\"henry 
schliemann\" meta_subject_txt:\"henry schliemann\" 
meta_shelflocator_txt:\"henry 
schliemann\"],parent_ids=id][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false]

[[meta_title_txt:\"henry schliemann\" meta_name_txt:\"henry schliemann\" 
text_ocr_ft:\"henry schliemann\" text_heidicon_ft:\"henry schliemann\" 
text_watermark_ft:\"henry schliemann\" text_catalogue_ft:\"henry 
schliemann\" text_index_ft:\"henry schliemann\" text_tei_ft:\"henry 
schliemann\" text_abstract_ft:\"henry schliemann\" text_pdf_ft:\"henry 
schliemann\"],id=parent_ids] [TraversalFilter: +class_s:meta 
-type_s:multivolume_work -type_s:periodical -type_s:issue 
-type_s:journal][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false])) 
+class_s:meta)],id=parent_ids][maxDepth=-1][returnRoot=true][onlyLeafNodes=false][useAutn=false])"

wdiff of both:

"GraphQuery([[filter(+(([[meta_title_txt:\"h"+GraphQuery([[+filter(+(([[meta_title_txt:\"h
  ... [TraversalFilter:class_s:meta  +class_s:meta  -type_s:multivolume_work ... [TraversalFilter:class_s:meta
 +class_s:meta  -type_s:multivolume_work
  ...

so the + before the »filter(« shouldnt be strictly necessary nor be the 
problem,

and the + efore class_s:meta isn't necessary, too, but can't be the 
problem, too, in my opinion.


What I found out is, that, "+" and "-" have higher precedence than "AND" 
and "OR"... but I don't see my error...

Does someone has a hint for me?


Kind regards,

Jochen


-- 
Jochen Barth * Universitätsbibliothek Heidelberg, IT * Telefon 06221 54-2580


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message