Hello dev, I tried to hack C4::Search to permit to search for a record from its ISBN whatever the form used (10 vs 13, with vs without dash). I have easily done it for the non QP form (~3 lines in C4::Search::buildQuery). It looked easy to do for using the QP too (almost the same ~3 lines in C4::Search::parseQuery). But I think there is a bug somewhere because the PQF query generated by QP is wrong, or I did not use the correct syntax. If I search for nb:foo && nb:bar => OK nb:foo || nb:bar => OK But with a 3rd term: nb:foo && nb:bar && nb:foobar => OK nb:foo && nb:bar || nb:foobar => KO (same as nb:foo && nb:bar && nb:foobar) nb:foo || nb:bar || nb:foobar => KO (same as nb:foo || nb:bar && nb:foobar) Actually the second operator is always replaced with && (AND) I don't know the the bug is come from Koha::QueryParser or OpenILS::QueryParser. Could someone familiar with this code help me giving some tricks? Regards, Jonathan PS: The tests are: is($QParser->target_syntax(' biblioserver', 'au:smith || ti:johnson || au:doe'), '@or @attr 1=1003 @attr 4=6 "smith" @or @attr 1=4 @attr 4=6 "johnson" @attr 1=1003 @attr 4=6 "doe"', 'query with 2 boolean ||'); is($QParser->target_syntax('biblioserver', 'au:smith && ( ti:johnson || au:doe )'), '@and @attr 1=1003 @attr 4=6 "smith" @or @attr 1=4 @attr 4=6 "johnson" @attr 1=1003 @attr 4=6 "doe"', 'query with 2 boolean && + ||'); And the result is: # Failed test 'query with 2 boolean ||' # at /home/koha/src/t/QueryParser.t line 56. # got: '@or @attr 1=1003 @attr 4=6 "smith" @and @attr 1=4 @attr 4=6 "johnson" @attr 1=1003 @attr 4=6 "doe"' # expected: '@or @attr 1=1003 @attr 4=6 "smith" @or @attr 1=4 @attr 4=6 "johnson" @attr 1=1003 @attr 4=6 "doe"' # Failed test 'query with 2 boolean && + ||' # at /home/koha/src/t/QueryParser.t line 59. # got: '@and @attr 1=1003 @attr 4=6 "smith" @and @attr 1=4 @attr 4=6 "johnson" @attr 1=1003 @attr 4=6 "doe"' # expected: '@and @attr 1=1003 @attr 4=6 "smith" @or @attr 1=4 @attr 4=6 "johnson" @attr 1=1003 @attr 4=6 "doe"'