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