Allgemeine Aktionen:
Anmelden
Wiki
▼
:
Dokumentenindex
»
Space:
Main
▼
:
Dokumentenverzeichnis
»
Seite:
LuceneSearch
Suche
Aktionen:
Exportieren
▼
:
Als PDF exportieren
Als RTF exportieren
Als HTML exportieren
Weitere Aktionen
▼
:
Druckvorschau
Zeige den Quellcode
Willkommen in den metamagix Wikis!
»
Suche
»
Lucene Suche
Wiki-Quellcode von
Lucene Suche
Zuletzt geändert von
Administrator
am 2010/05/04 17:56
Inhalt
·
Kommentare
(0)
·
Anmerkungen
(0)
·
Anhänge
(0)
·
Historie
·
Information
Zeilennummern verstecken
1: {{velocity}} 2: $xwiki.jsfx.use("uicomponents/search/search.js", true)## 3: $xwiki.ssfx.use("uicomponents/search/search.css", true)## 4: ## Disable the document extra data: comments, attachments, history... 5: #set($docextras = []) 6: ## =================== 7: ## Lucene search 8: ## =================== 9: ## Inputs : $request.text 10: ## Outputs : $list, $isScored 11: ## =================== 12: ## Uncomment this line to overload the maximum list of wiki where to search (also the one listed in the wikis combobox) 13: ## #set($allwikinamelist = ["xwiki", "wiki1", "wiki2"]) 14: ## 15: ## Uncomment this line to overload the wikis where to search 16: ## #set($wikinames = "xwiki,wiki,wiki") 17: ## 18: ## Uncomment this line to overload the languages to search 19: ## #set($languages = "default,en,de") 20: #set ($rssmode = ("$!request.xpage" == 'plain')) 21: ## --------------- 22: ## Space filtering 23: ## --------------- 24: #set($extraClause = '') 25: #set($spaces = $xwiki.spaces) 26: #set($selectedSpace = "$!request.space") 27: #if($selectedSpace != '' && !$blacklistedSpaces.contains($selectedSpace)) 28: #set($extraClause = " AND web:${selectedSpace}") 29: #end 30: ## ---------------------------------------------------------------------- 31: ## Exclude Blacklisted spaces ($blacklistedSpaces is set in xwikivars.vm) 32: ## Also exclude WebPreferences. 33: ## ---------------------------------------------------------------------- 34: #foreach ($blacklistedSpace in $blacklistedSpaces) 35: #set ($extraClause = " AND NOT web:${blacklistedSpace}${extraClause}") 36: #end 37: #if(!$hasAdmin && !$isAdvancedUser) 38: #set ($extraClause = " AND NOT name:WebPreferences${extraClause}") 39: #end 40: ## --------------- 41: ## Space macros 42: ## --------------- 43: #macro(spaceoption $space $selectedSpace) 44: <option value="${space}" #if($selectedSpace == $space)selected="selected"#end>$space</option> 45: #end 46: #macro(spaceselect $selectedSpace $spaces) 47: <select name="space" title="$msg.get('xe.search.bar.spaces.title')"> 48: <option value="" #if($selectedSpace == '')selected="selected"#end>$msg.get('xe.search.bar.spaces.all')</option> 49: #foreach($space in $spaces) 50: #if (!$blacklistedSpaces.contains($space)) 51: #spaceoption($space $selectedSpace) 52: #end 53: #end 54: </select> 55: #end 56: ## --------------- 57: ## Wikis filtering 58: ## --------------- 59: ## Parse provided wikis 60: #set($wikinamelist = []) 61: #if (!$wikinames) 62: #set($wikinametable = $request.getParameterValues("wikinames")) 63: #if (!$wikinametable || $request.wikinames == "") 64: #set($wikinametable = $allwikinamelist) 65: #end 66: #set($wikinames = '') 67: #foreach($wikiname in $wikinametable) 68: #set($ok = $wikinamelist.add($wikiname)) 69: #if($wikinames != "") 70: #set($wikinames = $wikinames + ",") 71: #end 72: #set($wikinames = $wikinames + $wikiname) 73: #end 74: #else 75: #set($wikinametable = $wikinames.split(", ")) 76: #foreach($wikiname in $wikinametable) 77: #set($ok = $wikinamelist.add($wikiname)) 78: #end 79: #end 80: ## 81: #if($xwiki.isVirtualMode()) 82: #if(!$allwikinamelist) 83: #set($currentwikiname = $context.database) 84: #set($ok = $context.setDatabase($context.mainWikiName)) 85: #set($allwikilist = $xwiki.searchDocuments(", BaseObject as obj, StringProperty as prop where doc.fullName=obj.name and obj.className='XWiki.XWikiServerClass' and prop.id.id=obj.id and prop.id.name='server'")) 86: #set($ok = $context.setDatabase($currentwikiname)) 87: ## 88: #set($allwikinamelist = []) 89: #foreach($wiki in $allwikilist) 90: #set($ok = $allwikinamelist.add($wiki.substring(17).toLowerCase())) 91: #end 92: #if(!$allwikinamelist.contains($context.mainWikiName)) 93: #set($ok = $allwikinamelist.add($context.mainWikiName)) 94: #end 95: #end 96: ## --------------- 97: ## Wikis macros 98: ## --------------- 99: #macro(wikinamesoption $wikiname $wikinamelist) 100: <option value="$wikiname" #if($wikinamelist.contains($wikiname))selected="selected"#end>$wikiname</option> 101: #end 102: #macro(wikinamesselect $allwikinamelist $wikinamelist) 103: <select name="wikinames"> 104: <option value="" selected="selected">All</option> 105: #foreach($wikiname in $allwikinamelist) 106: #wikinamesoption($wikiname $wikinamelist) 107: #end 108: </select> 109: #end 110: #else 111: #if($wikinames == '') 112: #set($wikinames = $context.mainWikiName) 113: #end 114: #end 115: ## --------------- 116: ## Query preparation 117: ## --------------- 118: #set($text = "$!request.getParameter('text')") 119: #set($query = $text) 120: #set($utext = $util.encodeURI($query)) 121: #set($defaultItemsPerPage = 30) 122: #set($itemsPerPage = $util.parseInt("$!{request.perPage}")) 123: #if($itemsPerPage <= 0) 124: #set($itemsPerPage = $defaultItemsPerPage) 125: #end 126: ## --------------- 127: ## Query form 128: ## --------------- 129: #if(!$rssmode) 130: {{html}} 131: <form action="" id="searchBar"> 132: <div class="centered"> 133: <label for="text" class="hidden">$msg.get('xe.search.query')</label> 134: <input type="text" id="text" name="text" class="searchQuery #if($text == '') defaultText#end" #if($text == '') value="$msg.get('xe.search.bar.query.tip')" #else value="${escapetool.xml($text)}" #end title="$msg.get('xe.search.bar.query.title')"/> 135: #spaceselect($selectedSpace $spaces) 136: <input type="submit" class="searchButton" value="$msg.get('xe.search.bar.submit')" title="$msg.get('xe.search.bar.submit.title')"/> 137: <div class="searchHelp">$msg.get('xe.search.bar.queryTip')</div> 138: </div> 139: </form> 140: {{/html}} 141: #end 142: ## --------------- 143: ## Results processing 144: ## --------------- 145: #if($query != '') 146: #set($lucene = $xwiki.getPlugin("lucene")) 147: #if($lucene) 148: ## --------------- 149: ## Lucene search 150: ## --------------- 151: #set($searchresults = $lucene.getSearchResults("${query}${extraClause}", $wikinames, $!languages, $xwiki)) 152: #if($searchresults.getHitcount() > 0) 153: ## ----------------- 154: ## Pagination (top) 155: ## ----------------- 156: #if(!$rssmode) 157: #set($paginationParameters = {'url' : $doc.getURL('view', "text=${query}&space=${selectedSpace}"), 'totalItems' : $searchresults.getHitcount(), 'defaultItemsPerPage' : $defaultItemsPerPage, 'position': 'top'}) 158: 159: {{html}} 160: #pagination($paginationParameters) 161: {{/html}} 162: #end 163: ## ----------------- 164: ## Display results 165: ## ----------------- 166: #set($firstIndex = "$!{paginationParameters.firstItem}") 167: #if($firstIndex == '') 168: #set($firstIndex = "$!request.getParameter('firstIndex')") 169: #if($firstIndex == '') 170: #set($firstIndex = '0') 171: #end 172: #end 173: #set($firstIndex = $util.parseInt($firstIndex)) 174: #set($firstIndex = $firstIndex + 1) 175: #set($results = $searchresults.getResults("$firstIndex", "$itemsPerPage")) 176: #if ($rssmode) 177: #set ($list = $util.arrayList) 178: #foreach ($item in $results) 179: #if ($item.type != "attachment") 180: #set ($ok = $list.add(0, "${item.web}.${item.name}")) 181: #end 182: #end 183: #set ($feed = $xwiki.feed.getDocumentFeed($list, $util.getHashMap())) 184: #set ($feedURI = $doc.getExternalURL("view")) 185: #set ($discard = $feed.setLink($feedURI)) 186: #set ($discard = $feed.setUri($feedURI)) 187: #set ($discard = $feed.setAuthor('XWiki')) 188: #set ($discard = $feed.setTitle($msg.get('xe.search.rss', [$text]))) 189: #set ($discard = $feed.setDescription($msg.get('xe.search.rss', [$text]))) 190: #set ($discard = $feed.setLanguage($context.language)) 191: #set ($discard = $feed.setCopyright($xwiki.getXWikiPreference('copyright'))) 192: {{html clean="false"}}$xwiki.feed.getFeedOutput($feed, 'rss_2.0'){{/html}} 193: #else 194: #set ($list = $results) 195: #set ($isScored = true) 196: 197: {{include document="XWiki.Results"/}} 198: #end 199: ## ----------------- 200: ## Pagination (bottom) 201: ## ----------------- 202: #if(!$rssmode) 203: #set($paginationParameters.position = 'bottom') 204: 205: {{html}} 206: #pagination($paginationParameters) 207: {{/html}} 208: ## --------------- 209: ## RSS link 210: ## --------------- 211: #if($selectedSpace == '') 212: #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=plain&text=${utext}" )) 213: #else 214: #set($rssURL = $xwiki.getURL($doc.fullName, 'view', "xpage=plain&space=${selectedSpace}&text=${utext}")) 215: #end 216: 217: {{html}} 218: <a href="${rssURL}"><img src="$xwiki.getSkinFile("icons/silk/feed.gif")" alt="RSS icon"/>$msg.get("xe.search.rss", ["[$query]"])</a> 219: {{/html}} 220: #end 221: #end 222: #else 223: 224: {{error}}$msg.get('xe.search.plugin.notfound')){{/error}} 225: #end 226: #end 227: #if (!$rssmode) 228: ## --------------- 229: ## Rebuild processing 230: ## --------------- 231: #set($lucene = $xwiki.getPlugin("lucene")) 232: #if($lucene) 233: #set($doRebuild = "$!{request.getParameter('rebuild')}") 234: #if($doRebuild == "yes") 235: #set($documentCount = $lucene.rebuildIndex()) 236: #if(${documentCount} >= 0) 237: 238: {{info}}$msg.get("xe.search.rebuild.started"){{/info}} 239: #elseif(${documentCount} == -1) 240: 241: {{error}}$msg.get("xe.search.rebuild.rights"){{/error}} 242: 243: #elseif(${documentCount} == -2) 244: 245: {{error}}$msg.get("xe.search.rebuild.inprogress"){{/error}} 246: #else 247: 248: {{error}}$msg.get("xe.search.rebuild.failed"){{/error}} 249: #end 250: #else## !doRebuild 251: ## --------------- 252: ## Queue & rebuild option 253: ## --------------- 254: #set ($queuesize = $xwiki.lucene.getQueueSize()) 255: #if ($queuesize > 2) 256: #set($info1 = $msg.get('xe.search.rebuild.currently', [${queuesize}])) 257: #else 258: #set($info1 = $msg.get('xe.search.index.uptodate')) 259: #end 260: #if($hasAdmin) 261: #set($info2 = " [[$msg.get('xe.search.index.rebuild')>>${doc.space}.${doc.name}?rebuild=yes]].") 262: #else 263: #set($info2 = "") 264: #end 265: 266: {{info}}${info1}${info2}{{/info}} 267: #end## doRebuild 268: #set($defaultSearch = "[[$msg.get('xe.search.default.engine')>>WebSearch?text=$utext]]") 269: 270: {{warning}}$msg.get('xe.search.lucene.experimental', [$defaultSearch]){{/warning}} 271: 272: #else## !lucene exists 273: #set($defaultSearch = "[[$msg.get('xe.search.default.engine')>>WebSearch?text=$utext]]") 274: 275: {{warning}}$msg.get('xe.search.plugin.notenabled', [$defaultSearch]){{/warning}} 276: #end## lucene exists 277: #end## !$rssmode 278: {{/velocity}}