Hi Blessing,

Sounds like two things got mixed up here. You found an example of a
structured query, which is XML (or JSON) syntax for writing complex
queries you would otherwise have to construct using cts: constructors. You
accidently embedded a piece of structured query inside search options. You
cannot use element-constraint-query this way.

If you want to be able to feed a string like ' LabDescription:"Machine
engineering" ' to search:search, and have it behave as you like, the best
option would be to use paths. There are two flavors: path range index
(best for exact values), and path-based field. You can feed both with a
path expression like ' //Lab/Description'.

Some documentation on path fields:

http://docs.marklogic.com/guide/admin/fields#id_23934

The other option is to switch to (manually constructed?) structured
queries altogether, and not use search:search, but search:resolve to
execute them..

http://docs.marklogic.com/search:resolve

Kind regards,
Geert

> -----Oorspronkelijk bericht-----
> Van: [email protected] [mailto:general-
> [email protected]] Namens Blessing N
> Verzonden: dinsdag 10 december 2013 15:52
> Aan: MarkLogic Developer Discussion
> Onderwerp: Re: [MarkLogic Dev General] Need help in element-constraint-
> query
>
> Hi Geert,
>
> I came across element-constraint-query from the following link
>
> http://docs.marklogic.com/guide/search-dev/structured-query#id_64263
>
> which i thought would suit my requirement to limit the search to
> Lab/Description.
>
> However the constraint mentioned  by you behaves as a simple element-
> word-query.
> Please find the output of search:parse
>
> <cts:element-word-query qtextpre="LabDescription:"
> qtextref="cts:annotation" xmlns:cts="http://marklogic.com/cts";>
>   <cts:element>Description</cts:element>
>   <cts:annotation qtextpre="&quot;"
> qtextref="following-sibling::cts:text" qtextpost="&quot;"/>
>   <cts:text>Machine engineering</cts:text>
>   <cts:option>wildcarded</cts:option>
>   <cts:option>case-insensitive</cts:option>
>   <cts:option>diacritic-insensitive</cts:option>
>   <cts:option>unstemmed</cts:option>
> </cts:element-word-query>
>
> This constraint searches <Description> present not only in <Lab> but
> also in <Workshop>.
> But I want the search to be restricted to Lab/Description.
>
> Regards,
> Blessing.
>
> On Tue, Dec 10, 2013 at 5:07 PM, Geert Josten <[email protected]>
> wrote:
> > Hi Blessing,
> >
> > That is probably because there is no such thing as an
> > element-constraint-query. You could use this instead:
> >
> > <constraint name="LabDescription">
> >         <word type="xs:string" facet="false">
> >                 <element ns="" name="Description" />
> >                 {$QUERY-OPTIONS}
> >         </word>
> > </constraint>
> >
> > Examples and explanation can be found here:
> > http://docs.marklogic.com/search:search#opt-constraint
> >
> > And when in doubt, you could use this to validate your search options:
> > http://docs.marklogic.com/search:check-options
> >
> > Kind regards,
> > Geert
> >
> >> -----Oorspronkelijk bericht-----
> >> Van: [email protected] [mailto:general-
> >> [email protected]] Namens Blessing N
> >> Verzonden: dinsdag 10 december 2013 12:08
> >> Aan: MarkLogic Developer Discussion
> >> Onderwerp: Re: [MarkLogic Dev General] Need help in
element-constraint-
> >> query
> >>
> >> Hi Geert,
> >>
> >> Thanks for your reply. As suggested I replaced the braces with double
> > quotes
> >>
> >>  LabDescription:"Machine engineering"
> >>
> >> Please find the output of search:parse
> >>
> >> <?xml version="1.0" encoding="UTF-8"?>
> >> <cts:word-query qtextpre="LabDescription:&quot;" qtextref="cts:text"
> >> qtextpost="&quot;" xmlns:cts="http://marklogic.com/cts";>
> >>   <cts:text>Machine engineering</cts:text>
> >> </cts:word-query>
> >>
> >> It forms a simple word query without applying the
> >> element-constraint-query and returns all records which is not my
> >> requirement.
> >>
> >> Regards,
> >> Blessing
> >>
> >> On Tue, Dec 10, 2013 at 4:04 PM, Geert Josten <[email protected]>
> >> wrote:
> >> > Hi Blessing,
> >> >
> >> > Using braces in your search expression doesn't work. Try:
> >> >
> >> >         LabDescription:"Machine engineering"
> >> >
> >> > A bit technical, but if you would use search:parse on your search
> >> > expression, you would notice that it decomposes it not as you were
> >> > expecting..
> >> >
> >> > Kind regards,
> >> > Geert
> >> >
> >> >> -----Oorspronkelijk bericht-----
> >> >> Van: [email protected] [mailto:general-
> >> >> [email protected]] Namens Blessing N
> >> >> Verzonden: dinsdag 10 december 2013 10:43
> >> >> Aan: MarkLogic Developer Discussion
> >> >> Onderwerp: Re: [MarkLogic Dev General] Need help in
> > element-constraint-
> >> >> query
> >> >>
> >> >> Hi Geert,
> >> >>
> >> >> This the $QUERY-OPTIONS
> >> >>
> >> >> declare variable $QUERY-OPTIONS :=
> >> >> (<search:term-option>wildcarded</search:term-option>,
> >> >>
> >> >> <search:term-option>case-insensitive</search:term-option>,
> >> >>
> >> >> <search:term-option>diacritic-insensitive</search:term-option>,
> >> >>
> >> >> <search:term-option>unstemmed</search:term-option>
> >> >>                                                          );
> >> >>
> >> >> and the search statement is
> >> >>
> >> >> LabDescription:(Machine engineering)
> >> >>
> >> >> Regards,
> >> >> Blessing
> >> >>
> >> >> On Mon, Dec 9, 2013 at 8:39 PM, Geert Josten
> <[email protected]>
> >> >> wrote:
> >> >> > Hi Blessing,
> >> >> >
> >> >> > What is the value of your $QUERY-OPTIONS variable? And what
> search
> >> >> > statement are you executing?
> >> >> >
> >> >> > Kind regards,
> >> >> > Geert
> >> >> >
> >> >> >> -----Oorspronkelijk bericht-----
> >> >> >> Van: [email protected] [mailto:general-
> >> >> >> [email protected]] Namens Blessing N
> >> >> >> Verzonden: maandag 9 december 2013 13:11
> >> >> >> Aan: MarkLogic Developer Discussion
> >> >> >> Onderwerp: [MarkLogic Dev General] Need help in
> > element-constraint-
> >> >> query
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> I have records of following format stored in Marklogic 6.0-2.3
> >> >> >>
> >> >> >> <Record id=1>
> >> >> >>    <Lab>
> >> >> >>       <Code>050</Code>
> >> >> >>       <Description>Laboratory Works</Description>
> >> >> >>    </Lab>
> >> >> >>    <Lab>
> >> >> >>       <Code>078</Code>
> >> >> >>       <Description>Laboratory Control</Description>
> >> >> >>    </Lab>
> >> >> >>    <Workshop>
> >> >> >>       <Code>069</Code>
> >> >> >>       <Description>Machine engineering<Description>
> >> >> >>    </Workshop>
> >> >> >> </Record>
> >> >> >>
> >> >> >> <Record id=2>
> >> >> >>    <Lab>
> >> >> >>       <Code>085</Code>
> >> >> >>       <Description>Machine engineering</Description>
> >> >> >>    </Lab>
> >> >> >>    <Lab>
> >> >> >>       <Code>078</Code>
> >> >> >>       <Description>Laboratory Control</Description>
> >> >> >>    </Lab>
> >> >> >>    <Workshop>
> >> >> >>       <Code>023</Code>
> >> >> >>       <Description>Power Consumption<Description>
> >> >> >>    </Workshop>
> >> >> >> </Record>
> >> >> >>
> >> >> >> My requirement is to provide a word query search using
> > search:search
> >> >> >> to find records whose Lab/Description is "Machine engineering".
> >> >> >>
> >> >> >> If I try to execute element-word-query on <Description> it
returns
> >> >> >> both the records. Since the requirement is to fetch only
records
> >> >> >> having "Machine engineering" under Lab/Description I tried
> > creating a
> >> >> >> element-constraint-query on <Lab> as follows
> >> >> >>
> >> >> >> <constraint name="Lab">
> >> >> >> <element-query ns="" name="Lab" />
> >> >> >> {$QUERY-OPTIONS}
> >> >> >> </constraint>
> >> >> >>
> >> >> >> <constraint name="LabDescription">
> >> >> >> <element-constraint-query>
> >> >> >>             <constraint-name>Lab</constraint-name>
> >> >> >>       <word type="xs:string" facet="false">
> >> >> >>            <element ns="" name="Description" />
> >> >> >>              {$QUERY-OPTIONS}
> >> >> >>        </word>
> >> >> >>  </element-constraint-query>
> >> >> >> </constraint>
> >> >> >>
> >> >> >> But it returned NIL results.
> >> >> >>
> >> >> >> Can anyone explain what is wrong in my
element-constraint-query?
> >> >> >> Also I cannot use a path-range-query since i have to perform
word
> >> >> >> query and not a value query.
> >> >> >>
> >> >> >> Thanks,
> >> >> >> Blessing.
> >> >> >> _______________________________________________
> >> >> >> General mailing list
> >> >> >> [email protected]
> >> >> >> http://developer.marklogic.com/mailman/listinfo/general
> >> >> > _______________________________________________
> >> >> > General mailing list
> >> >> > [email protected]
> >> >> > http://developer.marklogic.com/mailman/listinfo/general
> >> >> _______________________________________________
> >> >> General mailing list
> >> >> [email protected]
> >> >> http://developer.marklogic.com/mailman/listinfo/general
> >> > _______________________________________________
> >> > General mailing list
> >> > [email protected]
> >> > http://developer.marklogic.com/mailman/listinfo/general
> >> _______________________________________________
> >> General mailing list
> >> [email protected]
> >> http://developer.marklogic.com/mailman/listinfo/general
> > _______________________________________________
> > General mailing list
> > [email protected]
> > http://developer.marklogic.com/mailman/listinfo/general
> _______________________________________________
> General mailing list
> [email protected]
> http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to