我可以改进XWiki搜索结果以包含关键字匹配吗?

时间:2013-06-11 07:47:25

标签: java search velocity xwiki

当XWiki搜索结果返回时,没有关于匹配上下文的指示。只返回一个标题和一些时间和项目。有没有办法改进结果,以包括突出显示匹配项的内容摘要?

1 个答案:

答案 0 :(得分:1)

是的,当然对于基于标准关键字的搜索,这个速度代码应该可以解决问题。它是在XWiki Enterprise 5.0里程碑1上开发的。

编辑页面:http:// [servername:port] / xwiki / bin / edit / XWiki / Results

我在“评分”部分下方添加了我的更改,但您可以根据自己的需要进行布局。

添加以下代码,该代码将显示最多10个关键字匹配项以及关键字周围的20个前后单词。每个匹配字符串将由管道符号“|”分隔然后关键字以黄色突出显示。

显然,将这​​个匹配作为肤色会很好,但就我的目的而言,我对这种发展水平并不感兴趣。

           <div class="itemOthers">
         #set($outputSyntax = $xwiki.getAvailableRendererSyntax('plain', '1.0'))
         #if ($outputSyntax)
           #set ($preview = $xwiki.getDocument($itemfullname).getRenderedContent($outputSyntax))
           #set ($regex = $regextool.quote($request.text))
           #set ($regex_summarize = "(?i)(?:((\w+)\W+){0,20})\b\w*$regex\w*\b(((\W+)\w+){0,20})")
           #set ($regex_highlight = "(?i)($regex)")

           #set ($pattern_summarize = $regextool.compile($regex_summarize))
           #set ($matcher_summarize = $pattern_summarize.matcher($preview))

           #foreach ( $match_loop in [0,1,2,3,4,5,6,7,8,9] )
             #if ($matcher_summarize.find())
               #if ($match_loop > 0)
                <strong> | </strong>
               #end
               $escapetool.html($matcher_summarize.group(0)).replaceAll($regex_highlight,'<span style="background-color:yellow;">$1</span>')
             #end
           #end
         #end
       </div>

最后,您可以看到通过网址进行的修改和更改:http:// [servername:port] / xwiki / bin / view / XWiki / Results?viewer = history&amp; showminor = true