source: gs2-extensions/video-and-audio/trunk/src/opt/Terrier/results.jsp@ 26955

Last change on this file since 26955 was 26955, checked in by jmt12, 11 years ago

minor fix to javascript to prevent warnings in firebug et al when an undefined value was being printed out

File size: 8.4 KB
Line 
1<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
2 pageEncoding="UTF-8"
3 import="org.terrier.querying.*"
4 import="org.terrier.structures.Index"
5 import="org.terrier.structures.MetaIndex"
6 import="org.terrier.matching.ResultSet"
7 import="org.terrier.utility.ApplicationSetup"
8 %>
9<%!
10
11/*
12 * Terrier - Terabyte Retriever
13 * Webpage: http://terrier.org/
14 * Contact: terrier{a.}dcs.gla.ac.uk
15 * University of Glasgow - School of Computing Science
16 * http://www.gla.uk
17 *
18 * The contents of this file are subject to the Mozilla Public License
19 * Version 1.1 (the "License"); you may not use this file except in
20 * compliance with the License. You may obtain a copy of the License at
21 * http://www.mozilla.org/MPL/
22 *
23 * Software distributed under the License is distributed on an "AS IS"
24 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
25 * the License for the specific language governing rights and limitations
26 * under the License.
27 *
28 * The Original Code is results.jsp
29 *
30 * The Original Code is Copyright (C) 2004-2011 the University of Glasgow.
31 * All Rights Reserved.
32 *
33 * Contributor(s):
34 * Craig Macdonald <craigm{a.}dcs.gla.ac.uk> (original author)
35 *
36 */
37static int NUM_RESULTS_PER_PAGE = 10;
38static int NEAREST_PAGES = 5;
39static boolean SHOW_NEXT_PREV = true;
40String defaultMatching = ApplicationSetup.getProperty("terrier.jsp.matching", "Matching");
41String defaultModel = ApplicationSetup.getProperty("terrier.jsp.model", "PL2");
42
43protected static void displayResults(ResultSet rs, int iStart, javax.servlet.jsp.JspWriter out) throws IOException
44{
45 String[] displayKeys = rs.getMetaKeys();
46 String[][] meta = new String[displayKeys.length][];
47
48 int parser_idx = 0;
49 int assocfile_idx = 0;
50 int source_idx = 0;
51 int preview_idx = 0;
52
53 for(int j=0;j<displayKeys.length;j++)
54 {
55 if (displayKeys[j].equals("parser"))
56 {
57 parser_idx = j;
58 }
59 if (displayKeys[j].equals("assocfile"))
60 {
61 assocfile_idx = j;
62 }
63 if (displayKeys[j].equals("source"))
64 {
65 source_idx = j;
66 }
67 if (displayKeys[j].equals("preview"))
68 {
69 preview_idx = j;
70 }
71 meta[j] = rs.getMetaItems(displayKeys[j]);
72 }
73 double[] scores = rs.getScores();
74 for(int i=0;i<rs.getResultSize();i++)
75 {
76 String parser = "";
77
78 final int rank = iStart + i + 1;
79 out.println("<table value=\""+rank+"\" class=\"result\" style=\"margin-left:auto;margin-right:auto;text-align:left;width:50%\">");
80 out.println("<tr>");
81 out.println("<td style=\"vertical-align:top;width:5%\">"+ rank + ".</td>");
82
83 out.print("<td style=\"vertical-align:top\">");
84 for(int j=0;j<displayKeys.length;j++)
85 {
86 String field = displayKeys[j];
87 if (!(field.equals("assocfile") || field.equals("parser") || field.equals("preview") || field.equals("source")))
88 {
89 if (!meta[j][i].equals(""))
90 {
91 out.print("<span class=\"results_"+field+"\"><b>"+field+":</b> "+meta[j][i]+"</span>");
92 }
93 }
94 }
95 out.print("<span class=\"results_score\"><b>Score:</b> "+ scores[i] + "</span>");
96 out.println("</td>");
97
98 // Image preview
99 if (meta[parser_idx][i].equals("ImageDocument"))
100 {
101 out.print("<td style=\"vertical-align:top\">");
102 out.print("<a href=\"images/assoc/" + meta[assocfile_idx][i] + "/" + meta[source_idx][i] + "\"><img src=\"images/assoc/" + meta[assocfile_idx][i] + "/" + meta[preview_idx][i] + "\" /></a>");
103 out.println("</td>");
104 }
105
106 // Video preview
107 if(meta[parser_idx][i].equals("VideoDocument"))
108 {
109 out.print("<td>");
110 out.print("<script src=\"images/flowplayer-3.2.10.min.js\"></script>");
111 out.print("<a style=\"display:block;width:300px;height:240px\" id=\"player\"></a>");
112 out.print("<!-- this will install flowplayer inside previous anchor tag -->");
113 out.print("<script>");
114 out.print("flowplayer('player', 'images/flowplayer-3.2.11.swf', {");
115 out.print(" plugins: {");
116 out.print(" pseudo: { url: 'images/flowplayer.pseudostreaming-3.2.9.swf' }");
117 out.print(" },");
118 out.print(" clip: {");
119 out.print(" autoPlay: false,");
120 out.print(" provider: 'pseudo',");
121 out.print(" url: 'images/assoc/" + meta[assocfile_idx][i] + "/tsv.mp4' }");
122 out.print(" }");
123 out.print(");");
124 out.print("</script>");
125 out.println("</td>");
126 out.println("</tr>");
127 out.println("<tr>");
128 out.println("<td>&nbsp;</td>");
129 out.print("<td colspan=\"2\">");
130 String[] keyframe_images = meta[preview_idx][i].split(",");
131 for (int k = 0; k < keyframe_images.length; k++)
132 {
133 out.print("<img style=\"width:100px\" src=\"images/assoc/" + meta[assocfile_idx][i] + "/" + keyframe_images[k] + "\" />");
134 }
135 out.println("</td>");
136 }
137
138 out.println("</tr>");
139 out.println("</table>");
140 }
141}
142
143protected static void displayPageNumbers(
144
145 SearchRequest srq, ResultSet rs,
146 int iStart, javax.servlet.jsp.JspWriter out)
147 throws IOException
148{
149 String sQuery = srq.getOriginalQuery();
150 String sQuery_URLEncoded = java.net.URLEncoder.encode(sQuery, "UTF-8");
151 int maxResults = Math.min(rs.getExactResultSize(), 1000);//we dont let anyone go deeper than 1000
152 int numPages = maxResults / NUM_RESULTS_PER_PAGE;
153
154 if (SHOW_NEXT_PREV && iStart > 0)
155 {
156 int prevStart = iStart - NUM_RESULTS_PER_PAGE;
157 if (prevStart < 0)
158 prevStart = 0;
159 out.print("<a href=\"?query="+sQuery_URLEncoded+ "&start="+prevStart+"\">Previous</a> &nbsp;");
160 }
161
162 for(int i=0;i<numPages;i++)
163 {
164 int thisStart = (i * NUM_RESULTS_PER_PAGE);
165 if (Math.abs(thisStart - iStart) > NUM_RESULTS_PER_PAGE * NEAREST_PAGES)
166 continue;
167 if (thisStart != iStart)
168 out.print("<a href=\"?query="+sQuery_URLEncoded+ "&start="+ thisStart+"\">"+(i+1)+"</a>");
169 else
170 out.print(i+1);
171 out.print("&nbsp;");
172 }
173
174 if (SHOW_NEXT_PREV)
175 {
176 int nextStart = iStart + NUM_RESULTS_PER_PAGE;
177 if (nextStart < maxResults)
178 out.print("<a href=\"?query="+sQuery_URLEncoded+ "&start="+nextStart+"\">Next</a>");
179 }
180}
181
182%>
183
184<%
185
186String query = request.getParameter("query");
187if (query == null || query.length() == 0)
188 response.sendRedirect("./");
189query = query.trim();
190if (query == null || query.length() == 0)
191 response.sendRedirect("./");
192String sStart = request.getParameter("start");
193int iStart;
194if (sStart == null || sStart.length() == 0)
195{
196 sStart = "0";
197 iStart = 0;
198}
199else
200{
201 iStart = Integer.parseInt(sStart);
202 if (iStart > 1000)
203 {
204 iStart = 1000;
205 sStart = "1000";
206 }
207}
208
209Index index = (Index)application.getAttribute("terrier.jsp.index");
210if (index == null)
211{
212 index = Index.createIndex();
213 application.setAttribute("terrier.jsp.index", index);
214}
215Manager queryingManager = (Manager)application.getAttribute("terrier.jsp.manager");
216if (queryingManager == null)
217{
218 queryingManager = new Manager(index);
219 application.setAttribute("terrier.jsp.manager", queryingManager);
220}
221
222SearchRequest srq = queryingManager.newSearchRequest("results.jsp.query", query);
223srq.setOriginalQuery(query);
224srq.setControl("start", sStart);
225srq.setControl("decorate", "on");
226srq.setControl("end", String.valueOf(iStart + NUM_RESULTS_PER_PAGE -1));
227srq.addMatchingModel(defaultMatching, defaultModel);
228queryingManager.runPreProcessing(srq);
229queryingManager.runMatching(srq);
230queryingManager.runPostProcessing(srq);
231queryingManager.runPostFilters(srq);
232ResultSet rs = srq.getResultSet();
233int firstDisplayRank = iStart +1;
234int lastDisplayRank = 1+ Math.min(rs.getExactResultSize() -1, iStart + NUM_RESULTS_PER_PAGE);
235int possibleRanks = rs.getExactResultSize();
236
237%>
238<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
239<%@page import="java.io.IOException"%>
240<html>
241<head>
242<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
243<title>Terrier Search results for <%=query%></title>
244<link rel="stylesheet" type="text/css" href="style.css" />
245</head>
246<body>
247<a href="/"><img border="0" src="/images/terrier-logo-web.jpg"></a>
248<form action="results.jsp" id="queryform">
249<input type="text" size="50" name="query" value="<%=query %>" />
250<input type="submit" value="Search" / >
251</form>
252<div id="summary">
253Results for <%=query%>, displaying <%=firstDisplayRank%>-<%=lastDisplayRank%> of <%=possibleRanks %>
254</div>
255<div id="results">
256<%
257displayResults(rs, iStart, out);
258%>
259</div>
260<div id="pages">
261<%
262displayPageNumbers(srq, rs, iStart, out);
263%>
264</div>
265<hr width="50%">
266<div id="poweredby">
267<a href="http://terrier.org"><img src="/images/terrier-desktop-search.gif" border="0"/> Powered by Terrier</a>
268</div>
269</body>
270</html>
Note: See TracBrowser for help on using the repository browser.