That does seem undesirable. I was going to refer you to
https://github.com/mblakele/xqysp but it doesn't do much better - unless you
can get your users to quote the number?
import module namespace qe="com.blakeley.xqysp.query-eval"
at "query-eval.xqy";
qe:parse('123.4(5)'),
qe:parse('"123.4(5)"')
=>
cts:and-query((cts:word-query("123", ("lang=en"), 1), cts:word-query("4",
("lang=en"), 1), cts:word-query("5", ("lang=en"), 1)), ())
cts:word-query("123.4(5)", ("lang=en"), 1)
You can pass that output to search:resolve(), with pretty much the same
semantics as search:search.
-- Mike
On 10 Aug 2012, at 16:15 , Will Thompson wrote:
> I need to prevent paren grouping from happening when the parens are part of a
> string - typically it's a reference-type number. I can't think of a situation
> where this would be desirable anyway:
>
> search:parse('123.4(5)')
> => cts:and-query((cts:word-query("123.4(5"), cts:word-query(")")))
>
> If I change the grammar to require a space on either or both sides of the
> paren, then it will always break some legitimate grouping case like "(hello
> AND world)".
>
> Is there any way to control these grammar options a little further? It would
> be easy if you could just use regexes in the grammar options, i.e.:
>
> <starter strength="30" apply="grouping"
> delimiter="(^|\s)/)">/(($|\s)</starter>
>
> Thanks,
>
> Will
>
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
>
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general