LuceneSearch
Log-in
|
Main
:
Welcome to your wiki
>
WebSearch
>
LuceneSearch
Top Menu
Show
:
Comments
Attachments
History
Information
Stampa
:
Stampa
Anteprima di stampa
Esporta come PDF
Esporta in formato RTF
Esporta come HTML
Esporta in formato XAR
Wiki source code of
LuceneSearch
Hide line numbers
1: $xwiki.jsfx.use("uicomponents/search/search.js", true)## 2: $xwiki.ssfx.use("uicomponents/search/search.css", true)## 3: ## Disable the document extra data: comments, attachments, history... 4: #set($docextras = []) 5: ## =================== 6: ## Lucene search 7: ## =================== 8: ## Inputs : $request.text 9: ## Outputs : $list, $isScored 10: ## =================== 11: ## Uncomment this line to overload the maximum list of wiki where to search (also the one listed in the wikis combobox) 12: ## #set($allwikinamelist = ["xwiki", "wiki1", "wiki2"]) 13: ## 14: ## Uncomment this line to overload the wikis where to search 15: ## #set($wikinames = "xwiki,wiki,wiki") 16: ## 17: ## Uncomment this line to overload the languages to search 18: ## #set($languages = "default,en,de") 19: {pre} 20: #set ($displayUI = true) 21: #if ("$!request.xpage" == ’rdf’) 22: #set ($displayUI = false) 23: #end 24: ## --------------- 25: ## Space filtering 26: ## --------------- 27: #set($extraClause = ’’) 28: #set($selectedSpace = "$!request.space") 29: #if($selectedSpace != ’’ && !$blacklistedSpaces.contains($selectedSpace)) 30: #set($extraClause = " AND web:${selectedSpace}") 31: #end 32: ## ---------------------------------------------------------------------- 33: ## Exclude Blacklisted spaces ($blacklistedSpaces is set in xwikivars.vm) 34: ## Also exclude WebPreferences. 35: ## ---------------------------------------------------------------------- 36: #foreach ($blacklistedSpace in $blacklistedSpaces) 37: #set ($extraClause = " AND NOT web:${blacklistedSpace}${extraClause}") 38: #end 39: #if(!$hasAdmin && !$isAdvancedUser) 40: #set ($extraClause = " AND NOT name:WebPreferences${extraClause}") 41: #end 42: ## --------------- 43: ## Space macros 44: ## --------------- 45: #macro(spaceoption $space $selectedSpace) 46: <option value="${space}" #if($selectedSpace == $space)selected="selected"#end>$space</option> 47: #end 48: #macro(spaceselect $selectedSpace $spaces) 49: <select name="space" title="$msg.get(’xe.search.bar.spaces.title’)"> 50: <option value="" #if($selectedSpace == ’’)selected="selected"#end>$msg.get(’xe.search.bar.spaces.all’)</option> 51: #foreach($space in $xwiki.spaces) 52: #if (!$blacklistedSpaces.contains($space)) 53: #spaceoption($space $selectedSpace) 54: #end 55: #end 56: </select> 57: #end 58: ## --------------- 59: ## Wikis filtering 60: ## --------------- 61: #set($wikinamelist = []) 62: #if(!$wikinames) 63: #set($wikinametable = $request.getParameterValues("wikinames")) 64: #if(!$wikinametable || $request.wikinames == "") 65: #set($wikinametable = $allwikinamelist) 66: #end 67: #set($wikinames = "") 68: #foreach($wikiname in $wikinametable) 69: #set($ok = $wikinamelist.add($wikiname)) 70: #if($wikinames != "") 71: #set($wikinames = $wikinames + ",") 72: #end 73: #set($wikinames = $wikinames + $wikiname) 74: #end 75: #else 76: #set($wikinametable = $wikinames.split(", ")) 77: #foreach($wikiname in $wikinametable) 78: #set($ok = $wikinamelist.add($wikiname)) 79: #end 80: #end 81: ## 82: #if($xwiki.isVirtualMode()) 83: #if(!$allwikinamelist) 84: #set($currentwikiname = $context.database) 85: #set($ok = $context.setDatabase($context.mainWikiName)) 86: #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’")) 87: #set($ok = $context.setDatabase($currentwikiname)) 88: ## 89: #set($allwikinamelist = []) 90: #foreach($wiki in $allwikilist) 91: #set($ok = $allwikinamelist.add($wiki.substring(17).toLowerCase())) 92: #end 93: #if(!$allwikinamelist.contains($context.mainWikiName)) 94: #set($ok = $allwikinamelist.add($context.mainWikiName)) 95: #end 96: #end 97: ## --------------- 98: ## Wikis macros 99: ## --------------- 100: #macro(wikinamesoption $wikiname $wikinamelist) 101: <option value="$wikiname" #if($wikinamelist.contains($wikiname))selected="selected"#end>$wikiname</option> 102: #end 103: #macro(wikinamesselect $allwikinamelist $wikinamelist) 104: <select name="wikinames"> 105: <option value="" selected="selected">All</option> 106: #foreach($wikiname in $allwikinamelist) 107: #wikinamesoption($wikiname $wikinamelist) 108: #end 109: </select> 110: #end 111: #else 112: #if($wikinames == "") 113: #set($wikinames = $context.mainWikiName) 114: #end 115: #end 116: ## --------------- 117: ## Query preparation 118: ## --------------- 119: #set($text = "$!request.getParameter(’text’)") 120: #set($query = $text) 121: #set($utext = $util.encodeURI($query)) 122: #set($defaultItemsPerPage = 30) 123: #set($itemsPerPage = $util.parseInt("$!{request.perPage}")) 124: #if($itemsPerPage <= 0) 125: #set($itemsPerPage = $defaultItemsPerPage) 126: #end 127: ## --------------- 128: ## RSS link 129: ## --------------- 130: #if($selectedSpace == ’’) 131: #set($url = $xwiki.getURL($doc.fullName, ’view’, "xpage=rdf&text=${utext}" )) 132: #else 133: #set($url = $xwiki.getURL($doc.fullName, ’view’, "xpage=rdf&space=${selectedSpace}&text=${utext}")) 134: #end 135: ## --------------- 136: ## Title 137: ## --------------- 138: #if ($displayUI) 139: <h1><span> 140: <a style="float: right;" href="$url"><img src="$xwiki.getSkinFile(’icons/silk/feed.gif’)" alt="$msg.get(’xe.rss.icon’)" /></a> 141: $msg.get(’xe.search.title’)</span> 142: </h1> 143: ## --------------- 144: ## Query form 145: ## --------------- 146: <form action="" method="get" id="searchBar"> 147: <div class="centered"> 148: <input type="text" name="text" class="searchQuery #if($text == ’’) defaultText#end" #if($text == ’’) value="$msg.get(’xe.search.bar.query.tip’)" #else value="$xwiki.getXMLEncoded(${text})" #end title="$msg.get(’xe.search.bar.query.title’)"/> 149: #spaceselect($selectedSpace $spaces) 150: <input type="submit" class="searchButton" value="$msg.get(’xe.search.bar.submit’)" title="$msg.get(’xe.search.bar.submit.title’)"/> 151: <div class="searchHelp">$msg.get(’xe.search.bar.queryTip’)</div> 152: </div> 153: </form> 154: #end 155: {/pre} 156: ## --------------- 157: ## Results processing 158: ## --------------- 159: #if($query != ’’) 160: #set($lucene = $xwiki.getPlugin("lucene")) 161: #if($lucene) 162: ## --------------- 163: ## Lucene search 164: ## --------------- 165: #set($searchresults = $lucene.getSearchResults("${query}${extraClause}", $wikinames, $!languages, $xwiki)) 166: #if($searchresults.getHitcount() > 0) 167: ## ----------------- 168: ## Pagination (top) 169: ## ----------------- 170: #if($displayUI) 171: #set($paginationParameters = {’url’ : $doc.getURL(’view’, "text=${query}&space=${selectedSpace}"), ’totalItems’ : $searchresults.getHitcount(), ’defaultItemsPerPage’ : $defaultItemsPerPage, ’position’: ’top’}) 172: #pagination($paginationParameters) 173: #end 174: ## ----------------- 175: ## Display results 176: ## ----------------- 177: #set($firstIndex = "$!{paginationParameters.firstItem}") 178: #if($firstIndex == ’’) 179: #set($firstIndex = "$!request.getParameter(’firstIndex’)") 180: #if($firstIndex == ’’) 181: #set($firstIndex = ’0’) 182: #end 183: #end 184: #set($firstIndex = $util.parseInt($firstIndex)) 185: #set($firstIndex = $firstIndex + 1) 186: #set($results = $searchresults.getResults("$firstIndex", "$itemsPerPage")) 187: #if ("$!request.xpage" == ’rdf’) 188: #set ($baseurl = "http://${request.serverName}") 189: #set ($descText = $msg.get("xe.search.rss.feedfor")) 190: #set ($description = "$descText ’$text’") 191: #set ($list = $util.arrayList) 192: #foreach ($item in $results) 193: #if ($item.type != "attachment") 194: #set ($ok = $list.add(0, "${item.web}.${item.name}")) 195: #end 196: #end 197: #set ($ok = $response.setContentType("text/xml")) 198: #includeInContext("XWiki.WebRssCode") 199: #else 200: #set ($list = $results) 201: #set ($isScored = true) 202: #includeInContext("XWiki.Results") 203: #end 204: ## ----------------- 205: ## Pagination (bottom) 206: ## ----------------- 207: #if($displayUI) 208: #set($paginationParameters.position = ’bottom’) 209: #pagination($paginationParameters) 210: #end 211: #end 212: #else 213: #error($msg.get(’xe.search.plugin.notfound’)) 214: #end 215: #end 216: #if ($displayUI) 217: {pre} 218: ## --------------- 219: ## Rebuild processing 220: ## --------------- 221: #set($lucene = $xwiki.getPlugin("lucene")) 222: #if($lucene) 223: #set($doRebuild = "$!{request.getParameter(’rebuild’)}") 224: #if($doRebuild == "yes") 225: #set($documentCount = $lucene.rebuildIndex()) 226: #if(${documentCount} >= 0) 227: {/pre}#info($msg.get("xe.search.rebuild.started")){pre} 228: #elseif(${documentCount} == -1) 229: #error($msg.get("xe.search.rebuild.rights")) 230: #elseif(${documentCount} == -2) 231: #error($msg.get("xe.search.rebuild.inprogress")) 232: #else 233: #error($msg.get("xe.search.rebuild.failed")) 234: #end 235: #else ## !doRebuild 236: ## --------------- 237: ## Queue & rebuild option 238: ## --------------- 239: #set ($queuesize = $xwiki.lucene.getQueueSize()) 240: #if ($queuesize > 2) 241: #set($info1 = $msg.get(’xe.search.rebuild.currently’, [${queuesize}])) 242: #else 243: #set($info1 = $msg.get(’xe.search.index.uptodate’)) 244: #end 245: #if($hasAdmin) 246: #set($info2 = " [$msg.get(’xe.search.index.rebuild’)>${doc.space}.${doc.name}?rebuild=yes].") 247: #else 248: #set($info2 = "") 249: #end 250: {/pre}#info("${info1}${info2}"){pre} 251: #end ## doRebuild 252: {/pre} 253: #set($defaultSearch = "[$msg.get(’xe.search.default.engine’)>WebSearch?text=$utext]") 254: #warning($msg.get(’xe.search.lucene.experimental’, [$defaultSearch])) 255: #else ## !lucene exists 256: #set($defaultSearch = "[$msg.get(’xe.search.default.engine’)>WebSearch?text=$utext]") 257: #warning($msg.get(’xe.search.plugin.notenabled’, [$defaultSearch])) 258: #end ## lucene exists 259: #end ## displayUI
Search
Quick Links
Wiki Dashboard
Document Index
Blog
Sandbox
My Recent Modifications
dany
|
marco