With RC1 lucene seems to work again, so i have costumized the
existing search
form from jkraemer
(
http://www.jkraemer.net/static/maven/xwiki/plugins/lucene-plugin/
install.html)
But keep attention: it's just a quick&dirty example to display the
results
in a table ;-)
As im not very familiar with velocity, the code is quite ugly!
(for example
i didn't find a while loop to output the number of stars for score-
quality,
so i did it with if, if, if..)
it still has some bugs:
* if you search for a regular expression (e.g. win*), then the
query for the
next page will be win</strong>
* non wiki-documents and non-attachments will be hidden from the
results, so
it could happen that you see an empty page with a link to the next
results
(that's because searchresults.hitcount returns all results, also
the hidden
ones..)
* many more..
* icons are hard-coded.. (/skins/lgs/*.png)
You can get the icons for free from famfamfam:
http://www.famfamfam.com/lab/icons/silk/
---------------------------
Searchform.vm:
1 Search
#set($query = $request.getParameter("text"))
#if(!$query)
#set($query = "")
#end
#warning("This is the new lucene search engine.\\
If you experience any problems, try to use the default xwiki
[Search>WebSearch?text=$query]..")
#set($itemsPerPage = "30")
#set($doRebuild = $request.getParameter("rebuild"))
#if($doRebuild=="yes")
#set($lucene = $xwiki.getPlugin("lucene"))
#if($lucene)
#set($documentCount = $lucene.rebuildIndex($xwiki,$context))
#if(${documentCount}>=0)
Started index rebuild with $documentCount documents. Will take
some time
depending on the number of pages/attachments.
#else
Index rebuild failed.
#end
#end
#else
#if($xwiki.hasAdminRights())
[rebuild Index>${doc.web}.${doc.name}?rebuild=yes]
#end
#end
{pre}
<form action="$doc.name" method="post">
<input type="text" name="text" value="$query" />
<input type="submit" value="Search"/>
</form>
{/pre}
#if($query != "")
#set($lucene = $xwiki.getPlugin("lucene"))
#if($lucene)
#set($wikinames = "xwiki")
#set($languages = "default,en,de")
#set($firstIndex = $request.getParameter("firstIndex"))
#if(!$firstIndex)
#set($firstIndex = "1")
#end
#set($searchresults = $lucene.getSearchResults($query, $wikinames,
$languages, $xwiki))
#set($results = $searchresults.getResults($firstIndex,
$itemsPerPage))
#if($results.size()>0)
#set($lastIndex=$searchresults.getEndIndex($firstIndex,
$itemsPerPage))
#if($searchresults.hitcount==1)
##{pre} $msg.get("oneresult"):{/pre}
#else
##{pre}$msg.get("results") $firstIndex - $lastIndex $msg.get
("of")
${searchresults.hitcount}:{/pre}
#if($searchresults.hasPrevious($firstIndex))
[previous
page>${doc.web}.${doc.name}?text=$query&firstIndex=
$searchresults.getPreviousIndex($firstIndex,$itemsPerPage)]
#end
#if($searchresults.hasNext($firstIndex,$itemsPerPage))
[next
page>${doc.web}.${doc.name}?text=$query&firstIndex=
$searchresults.getNextIndex($firstIndex,$itemsPerPage)]
#end
#end
<table width="100%" class="grid" cellSpacing=0
cellpadding="5"
border="1">
<tr>
<th>Result</th>
<th width="100">Date</th>
<th width="150">Last Author</th>
<th width="100">Score</th>
</tr>
#foreach($result in $results)
#if($result.type=='wikipage')
<tr>
#if($xwiki.isVirtual())
<td align=left>[${result.wiki}:${result.web}.${result.name}]</
td>
#else
<td align=left>[${result.web}.${result.name}]</td>
#end
<td>$xwiki.formatDate($result.date, "d. MMM yyyy")</td>
<td>$xwiki.getUserName($result.author)</td>
<td>
#set($resval=$result.score*100)
#if($resval>10)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>25)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>50)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>70)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>90)
/xwiki/skins/lgs/16-star-hot.png
#end
${resval}%
</td>
</tr>
#elseif($result.type=='attachment')
<tr>
<td align=left> ${result.url} /xwiki/skins/lgs/disk.png
${result.filename} \\
Attachment of [${result.web}.${result.name}]</td>
<td>$xwiki.formatDate($result.date, "d. MMM yyyy")</td>
<td>$xwiki.getUserName($result.author)</td>
<td>
#set($resval=$result.score*100)
#if($resval>10)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>25)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>50)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>70)
/xwiki/skins/lgs/16-star-hot.png
#end
#if($resval>90)
/xwiki/skins/lgs/16-star-hot.png
#end
${resval}%
</td>
</tr>
#end
</tr>
#end
#else
$msg.get("noresults")
#end
</table>
\\
#else
lucene plugin not found
#end
#end