Hi Alan I think your field contraint is fine-- the default grammar simply expects a different syntax.
I could be mistaken, but I think either of the following expressions will give you ANDed queries: ANY:"x AND y" ANY:x ANY:y See if that gives you what you need. There may be a way beyond this to use the grammar configuration to move you toward the syntax you've used, but it's not occurring to me off the top of my head. Charles Charles Greer Lead Engineer MarkLogic Corporation cgr...@marklogic.com Cell: +1 707 318 0442 @grechaw www.marklogic.com ________________________________ From: general-boun...@developer.marklogic.com [general-boun...@developer.marklogic.com] on behalf of Alan Darnell [alan.darn...@utoronto.ca] Sent: Tuesday, June 20, 2017 2:54 PM To: General Developer Discussion Subject: [MarkLogic Dev General] field constraint in search API Having a little trouble setting up a field constraint in the Search API and can’t find an answer in the documentation. We’ve created a field called “anywhere” composed of a number of elements that appear in our standard XML document. We’ve also created a constraint called ANY defined as: <constraint name=“ANY”> <word> <field name=“anywhere” /> </word> </constraint> We are sending the string ANY:(x y) to the search API. We are looking for this to turn into two AND’d word queries but what we get is a phrase search on “x y”. Here’s the output from the search API: <search:report id="SEARCH-FLWOR"> (cts:search(/book, cts:field-word-query("anywhere", "x y", ("lang=en"), 1), ("score-logtfidf",cts:score-order("descending")), 1))[1 to 20] </search:report> We were hoping instead for something like this. <search:report id="SEARCH-FLWOR"> (cts:search(/book, cts:field-word-query(“anywhere"), cts:and-query((cts:word-query("x", ("case-insensitive","diacritic-insensitive","punctuation-insensitive","wildcarded","lang=en"), 1), cts:word-query("y", ("case-insensitive","diacritic-insensitive","punctuation-insensitive","wildcarded","lang=en"), 1)), ()), ()), ("score-logtfidf",cts:score-order("descending")), 1))[1 to 20] </search:report> Is this kind of search possible with fields? If so, how should the constraint be defined? Thanks in advance, Alan
_______________________________________________ General mailing list General@developer.marklogic.com Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general