Thanks, Michael. After reading about the search API, it does seem like a simpler approach. So in order to perform a google-like search within any Sect1 or Sect2 in the structure below, I would use a collection constraint -- correct?
Thanks again for your help. Chris On Wed, Mar 3, 2010 at 11:42 AM, Michael Blakeley < [email protected]> wrote: > Chris, > > Why not use the higher-level search:search() API? The function reference > page is > http://developer.marklogic.com/pubs/4.1/apidocs/SearchAPI.html#search:search > > The Search Developer's Guide ( > http://developer.marklogic.com/pubs/4.1/books/search-dev-guide.pdf) has > more about the high-level search API. > > If you need to use the lower-level cts:search() API for some reason, start > with http://developer.marklogic.com/howto/tutorials/ and the "Paginated > Search for Web Applications" tutorial. > > -- Mike > > > On 2010-03-03 03:38, Chris Morgan wrote: > >> Hello, >> >> I'm new to MarkLogic and am having trouble getting a search query to work >> properly. Specifically, I'm attempting to build a simple query of a DocBook >> style document. The structure of the document is as follows: >> >> <article> >> <sect1> >> <title>The first title</sect1> >> <para>a paragraph of text</para> >> <sect2> >> <title>The first title</sect1> >> <para>a paragraph of text</para> >> </sect2> >> </sect1> >> </article> >> >> My goal is to build a simple search tool that will search through >> all<sect1> and<sect2> elements and find any paragraph containing the >> search term. I'd like to return: >> >> <a href="somelink.xqy">Section Title</a> >> <p>Paragraph text with<span class="highlight">highlighted search >> term</span> in it.</p> >> >> The problem is that when I loop through the paragraphs containing the >> search term, I return every sect1 or sect2 title, regardless of whether that >> title contains para elements with the search term. >> >> Here's what I have so far: >> >> ======================================= >> xquery version "1.0-ml"; >> >> xdmp:set-response-content-type("text/html"), >> <html> >> <body> >> <head> >> <link rel="stylesheet" type="text/css" href="affect.css" /> >> </head> >> <div class="container"> >> <div class="topNav"> >> <form method="GET" action="searchtest3.xqy" id="searchForm"> >> <input type="hidden" name="start" id="start" value="1"/> >> <input type="text" name="search" size="43" maxlength="256" value=""/> >> <input type="submit" name="button" value="search"/> >> </form> >> </div> >> {let $searchTerm := xdmp:get-request-field("search") >> let $query := cts:query(<cts:word-query xmlns:cts=" >> http://marklogic.com/cts >> "><cts:text>{$searchTerm}</cts:text></cts:word-query>) >> >> for $newresults in (//sect1|//sect2) >> where cts:contains(($newresults//para), $query) >> return >> <div> >> <a href="www.google.com<http://www.google.com>" >> class="searchResult">{$newresults/title/text()}</a> >> >> { >> for $para in $newresults/para >> where cts:contains($para, $query) >> return >> <p>{cts:highlight($para[1],$query,<span >> class="highlight">{$cts:text}</span>)}</p> >> } >> </div>} >> </div> >> </body> >> </html> >> ======================================= >> >> Thanks for your help! >> >> Chris >> >> >
_______________________________________________ General mailing list [email protected] http://xqzone.com/mailman/listinfo/general
