Geert,
Thanks for the help. I believe you when you say that "index-of" may be slow. However, I am trying to get this to work (and satisfy my mind how it pull out the content at an index (like an array index):-). The code uses the search API plus I think I didn't explain the situation very well and I also left out some of the code. I tried the following based on you response but it still did not work. Any pointers?:
*
Up above in the code is this code :

/declare variable $results := let $q := xdmp:get-request-field("q", "sort:newest")
let $q := local:add-sort($q)
return search:search($q, $options, xs:unsignedLong(xdmp:get-request-field("start","1")));/
.
.
.


declare function local:search-results()*
/let $items :=
    for $song in $results/search:result
    let $uri := fn:data($song/@uri)
    let $song-doc := fn:doc($uri)
    return

        {if {$song-doc//ts:Value[.='cat'])
            then let $x := fn:index-of($song-doc//ts:Value,'cat')
            for $gencontent at $index in $song-doc//ts:Value

            return
/note: I thought the following line would work but it didn't/

<div class="abc"> Content of "Value" at "cat" + 1 = {//$song-doc//ts:Value[$x + 1]}</div>/
/

    else ()} .../
any help appreciated!!
randy

On 5/10/2011 7:05 AM, Geert Josten wrote:

Hi Randy,

Using index-of might not perform well. I would recommend using the for each at $pos construction instead:

for $song at $index in $searchresults

...

You can use $searchresults[$index + 1] to get access to the next searchresult (if there is any)

Kind regards,

Geert

*Van:*[email protected] [mailto:[email protected]] *Namens *Randy Smith
*Verzonden:* maandag 9 mei 2011 22:47
*Aan:* [email protected]
*Onderwerp:* [MarkLogic Dev General] How To Get The "Content" of An Index?

Anyone,
I think this is a simple question:
If I am using the MarkLogic search API like like with the Top-Songs app we developed in class e.g.:

/let $items :=
    for $song in $results/search:result
    let $song-doc := fn:doc($uri)
    return

        {if {$song-doc//ts:Value[.='cat'])
then <div class="abc"> Get the index of "Value" that has "cat" in it ==> {fn:index-of($song-doc//ts:Value/text(), 'cat')}</div>
    else ()} .../

The above works fine and gives me back the */index /**/for "cat" that is one of the many content values in element "Value"/*/(the element "Value" appears as many as 1500 times in some documents)./ But what I need is the content of the */index/*/+1/ position. I already know "cat" is in the returned index position but I need to print out the content of the */index /*+ 1 position (or in some cases */index/*+2)

I'm sure there is a nice way to reference the /$song-doc//ts:Value[.='cat']/ content by using something like (but I know this does not work) /$song-doc//ts:Value[index+1]/ to get the content printed out. I know to look for "cat" but I do not know what is in the /"cat" position + 1/.

Any help appreciated! :'(


_______________________________________________
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