Dear John,

I use lib-parser, not lib-search, but in case the concept is similar, this is the conditional code block in one of our programs in which if the user has selected "docs" as their search scope then a fielded search becomes the default without requiring the user to know or supply a field name:

else if ($scope = "docs") then (
    (: use cts:field-word-querys and fields for document-only search :)
    (: get a cts:query type from query string :)
    let $cts-query := lp:get-cts-query($phrase)
    (: get a cts:query element from cts:query constructor :)
    let $cts-query-element := lp:serialize-cts-query($cts-query)
    (: turn the cts:query element into a string :)
    let $cts-query-element-string := xdmp:quote($cts-query-element)
(: replace every cts:word-query with a sequence of cts:field-word- querys :)
    let $cts-query-element-string-fields := replace(
      $cts-query-element-string,
      '<cts:word-query(.*?)>(.*?)</cts:word-query>',
'<cts:field-word-query $1 string-item="div_nonotes">$2</ cts:field-word-query>'
    )
    (: change the string back into a cts:query element :)
let $cts-query-element-fields := xdmp:unquote($cts-query-element- string-fields)
    (: convert the cts:query element into a cts:query constructor :)
let $cts-query-final := lp:deserialize-query($cts-query-element- fields)
    return $cts-query-final (: return the constructor :)

Basically, using regex the cts:word-query() is translated into a cts:field-word-query().

This was pre-conference, and I do not know if this applies to your case at all or is at all helpful, and I'd be interested in hearing from others whether this method has any merit or if there is a more direct approach.

Regards,
Shannon

On Jul 10, 2008, at 12:34 PM, John Craft wrote:

I believe I'm looking for the same answer as Mike. Is there a way to specify a field to search without requiring the user to know the name of the field? Basically, the default search is a fielded search.

John Craft

________________________________________
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] ] On Behalf Of Mike Sokolov
Sent: Thursday, July 10, 2008 9:37 AM
To: General Mark Logic Developer Discussion
Subject: Re: [MarkLogic Dev General] lib-search, Fields,andcts:field- word-query

Frank did you indicate there was a way to map a search "box" (element, field, parameter - these words are too overloaded) to a field in the lib-search criteria, rather than requiring the user to enter a formatted query (or munging the text of their query)? That would be useful

-Mike

Frank Rubino wrote:
It's the indicator passed in the user's query string:

myField:smith

It allows you to provide the user with a more friendly syntax.

On 7/10/08 9:59 AM, "John Craft" <[EMAIL PROTECTED]> wrote:


Frank-

In your example below, what does the code attribute map to?

John Craft

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Frank
Rubino
Sent: Thursday, July 10, 2008 8:18 AM
To: General Mark Logic Developer Discussion
Subject: Re: [MarkLogic Dev General] lib-search, Fields,
andcts:field-word-query

John-
The lib-parser example mapping element is configured to specify
field-word
queries on a field called "weighted".

To use fields you sprecify, you create your own  mapping element:

declare namespace lp = "http://www.marklogic.com/ps/lib/lib-parser";
(:don't
forget namespace:)

<lp:search-field-map>
   <lp:mapping code="myField" field="fieldName"/>
 </lp:search-field-map>

The field attribute indicates the name of the field you created in the
admin
interface.

You use this element with lib-search when you create your
search-criteria
element.

Frank



On 7/9/08 11:49 PM, "John Craft" <[EMAIL PROTECTED]> wrote:


I have created a field with appropriate includes and excludes, but I

am

having difficulty figuring out how to configure lib-search to search

it.

lib-search keeps wanting to build cts:word-query() constructors rather
than a cts:field-word-query() constructor.  I have looked through the
code and found the $SEARCH-FIELD-MAP in lib-parser.xqy but I'm not

sure

exactly how to use it.  The example in the documentation seems to
indicate <lp:mapping /> is for searching specific elements.

Any insight you could share with lib-search and fields would be
appreciated.

John Craft
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general


Frank Rubino
Mark Logic Corp.

862-596-3248
[EMAIL PROTECTED]



Frank Rubino
Mark Logic Corp.

862-596-3248
[EMAIL PROTECTED]

_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

__________________________________________________
Shannon Scott Shiflett, programmer/analyst with ROTUNDA,
The University of Virginia Press, Charlottesville, VA  USA
http://rotunda.upress.virginia.edu

_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to