Changeset 31570 for other-projects/hathitrust/wcsa
- Timestamp:
- 2017-04-03T23:04:19+12:00 (7 years ago)
- Location:
- other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/index.css
r31524 r31570 1 table.query-table tr td { 2 padding-top: 4px; 3 padding-bottom: 4px; 4 padding-right: 6px; 5 } 6 1 7 .show-hide-lang { 2 8 display: none; -
other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/index.html
r31524 r31570 294 294 295 295 <div class="container"> 296 <h4>Ad minResources</h4>296 <h4>Additional Resources</h4> 297 297 <ul> 298 <li><a href="stream-query.html">Combined Volume Metadata and Page-levelPOS Term searching</a></li> 298 299 <li><a href="admin.html">HTRC-EF Solr Admin UI (log in)</a></li> 299 300 <li><a href="luke_lang_mappings.html">Dynamically Generated Language Map (Part-of-Speech, and Other)</a></li> -
other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/index.js
r31524 r31570 57 57 } 58 58 59 function stream_generate_item(line,id,title) 60 { 61 var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"'; 62 63 var html_item = ""; 64 65 66 var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+0; 67 68 html_item += '<p ' + css_class + '>'; 69 //html_item += ' <span style="font-style: italic;" name="'+id+'"></span><br>'; 70 html_item += '<a target="_blank" href="' + babel_url + '">' + id + ': ' + title + '</a>'; 71 html_item += '</p>'; 72 73 return html_item; 74 } 75 59 76 60 77 function generate_item(line,id,id_pages) … … 105 122 } 106 123 107 function show_results(jsonData) { 108 var response = jsonData.response; 109 var num_found = response.numFound; 110 var docs = response.docs; 111 var num_docs = docs.length; 124 function stream_show_results(jsonData) { 125 var docs = jsonData["result-set"].docs; 126 var num_docs = docs.length -1; 112 127 113 128 $('.search-in-progress').css("cursor","auto"); … … 116 131 117 132 if (num_docs>0) { 118 $search_results.html("<p>Results: " + num_found + " pages matched</p>"); 133 $search_results.html("<p>Results: " + num_docs + " volumes matched</p>"); 134 /* 119 135 var from = parseInt(store_search_args.start); 120 136 var to = from + num_rows; 121 137 $search_results.append("<p>Showing matches: "+from+"-" + to + "</p>"); 138 */ 122 139 } 123 140 else { 124 $search_results.html("<p>No pages matched your query</p>"); 125 } 126 127 128 // https://babel.hathitrust.org/cgi/pt?id=hvd.hnnssu;view=1up;seq=11 129 141 $search_results.html("<p>No volumes matched your query</p>"); 142 } 143 144 for (var i=0; i<num_docs; i++) { 145 var doc = docs[i]; 146 var id = doc.id; 147 var title = doc.title_t; 148 149 var html_item = stream_generate_item(i,id,title); 150 $search_results.append(html_item); 151 } 152 return; 153 // **** 154 130 155 var htids = []; 131 156 … … 155 180 } 156 181 157 // var css_class = (i%2 == 0) ? 'class="evenline"' : 'class="oddline"';158 // //var restful_safe_id = id.replace(/\./g,",").replace(/:/g, "+").replace(/\//g, "=");159 160 // var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+seqnum;161 162 // var result_item = '<a target="_blank" href="' + babel_url + '">' + id + ', page ' + page + '</a>';163 // result_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span>';164 // $search_results.append('<p ' + css_class + '>'+result_item+'</p>');165 166 182 htids.push("htid:"+id); 167 183 … … 203 219 } 204 220 221 222 function show_results(jsonData) { 223 var response = jsonData.response; 224 var num_found = response.numFound; 225 var docs = response.docs; 226 var num_docs = docs.length; 227 228 $('.search-in-progress').css("cursor","auto"); 229 230 var $search_results = $('#search-results'); 231 232 if (num_docs>0) { 233 $search_results.html("<p>Results: " + num_found + " pages matched</p>"); 234 var from = parseInt(store_search_args.start); 235 var to = from + num_rows; 236 $search_results.append("<p>Showing matches: "+from+"-" + to + "</p>"); 237 } 238 else { 239 $search_results.html("<p>No pages matched your query</p>"); 240 } 241 242 243 // https://babel.hathitrust.org/cgi/pt?id=hvd.hnnssu;view=1up;seq=11 244 245 var htids = []; 246 247 var prev_id = null; 248 var prev_pages = []; 249 250 var i=0; 251 var line_num = 0; 252 while (i<num_docs) { 253 // for (var i=0; i<num_docs; i++) { 254 var doc = docs[i]; 255 var id_and_page = doc.id.split(".page-"); 256 var id = id_and_page[0]; 257 var seqnum = parseInt(id_and_page[1]); 258 var page = seqnum+1; 259 260 if ((prev_id != null) && (id != prev_id)) { 261 // time to output previous item 262 var html_item = generate_item(line_num,prev_id,prev_pages); 263 $search_results.append(html_item); 264 line_num++; 265 prev_pages = [page]; 266 } 267 else { 268 // accumulate pages 269 prev_pages.push(page) 270 } 271 272 // var css_class = (i%2 == 0) ? 'class="evenline"' : 'class="oddline"'; 273 // //var restful_safe_id = id.replace(/\./g,",").replace(/:/g, "+").replace(/\//g, "="); 274 275 // var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+seqnum; 276 277 // var result_item = '<a target="_blank" href="' + babel_url + '">' + id + ', page ' + page + '</a>'; 278 // result_item += ' <span style="font-style: italic;" name="'+id+'"><span style="cursor: progress;">Loading ...</span></span>'; 279 // $search_results.append('<p ' + css_class + '>'+result_item+'</p>'); 280 281 htids.push("htid:"+id); 282 283 prev_id = id; 284 i++; 285 } 286 287 var html_item = generate_item(line_num,prev_id,prev_pages); 288 $search_results.append(html_item); 289 290 291 document.location.href="#search-results-anchor"; 292 293 var next_prev = '<p style="width:100%;"><div id="search-prev" style="float: left;"><a>< Previous</a></div><div id="search-next" style="float: right;"><a>Next ></a></div></p>'; 294 295 $search_results.append(next_prev); 296 $('#search-prev').click(function(event) { show_new_results(-1*num_rows); }); 297 $('#search-next').click(function(event) { show_new_results(num_rows); }); 298 299 var search_start = store_search_args.start; 300 if (search_start==0) { 301 $('#search-prev').hide(); 302 } 303 304 // Example URL for catalog metadata (multiple items) 305 // http://catalog.hathitrust.org/api/volumes/brief/json/id:552;lccn:70628581|isbn:0030110408 306 307 var htids_str = htids.join("|",htids); 308 var cat_url = "http://catalog.hathitrust.org/api/volumes/brief/json/" + htids_str; 309 $.ajax({ 310 url: cat_url, 311 dataType: 'jsonp', 312 jsonpCallback: "add_titles" 313 }); 314 315 316 //var json_pretty = JSON.stringify(jsonData.response, null, '\t'); 317 //$('#search-results').text(json_pretty) 318 } 319 205 320 var store_search_args = null; 206 321 var store_search_action = null; 207 322 208 323 var group_by_vol_checked = 0; 324 325 function stream_submit_action(event) 326 { 327 event.preventDefault(); 328 329 $('.search-in-progress').css("cursor","wait"); 330 331 var vq_text = $('#vq').val(); 332 333 store_search_action = $('#search-form').attr("action"); 334 335 var arg_indent = $('#indent').attr('value'); 336 var arg_wt = $('#wt').attr('value'); 337 var arg_start = $('#start').attr('value'); 338 var arg_rows = $('#rows').attr('value'); 339 var q_text = $('#q').val(); 340 341 group_by_vol_checked = $('#group-results-by-id:checked').length; 342 343 344 if ((q_text === "") && (vq_text === "")) { 345 $('.search-in-progress').css("cursor","auto"); 346 alert("No query term entered"); 347 return; 348 } 349 350 var expr_all = ""; 351 var expr_md = ""; 352 var expr_tx = ""; 353 354 if (vq_text !== "") { 355 // simplified case of issuing a volume-based metadata query 356 //expr=search(col,q,fl,sort,rows) 357 358 359 //var expr = "expr=search("; 360 expr_md = "search("; 361 expr_md += "htrc-full-ef20"; 362 expr_md += ",q=\""+vq_text+"\""; 363 expr_md += ",fl=\"volumeid_s,id,title_t\""; 364 expr_md += ",sort=\"id asc"+"\""; 365 expr_md += ",indent=\""+arg_indent+"\""; 366 expr_md += ",wt=\""+arg_wt+"\""; 367 expr_md += ",start=\""+arg_start+"\""; 368 expr_md += ",rows=\""+arg_rows+"\""; 369 expr_md += ")"; 370 371 store_search_args = { q: vq_text, indent: arg_indent, wt: arg_wt, 372 start: arg_start, rows: arg_rows }; 373 } 374 375 if (q_text !== "") { 376 377 var fields = []; 378 var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ]; 379 380 var arg_q = ""; 381 382 var split_q_text = q_text.split(/\s+/); 383 for (var qi=0; qi<split_q_text.length; qi++) { 384 q_text = split_q_text[qi]; 385 386 for (var li=0; li<langs_with_pos.length; li++) { 387 var lang = langs_with_pos[li]; 388 var lang_enabled_id = lang + "-enabled"; 389 var $lang_enabled_cb = $('#'+lang_enabled_id); 390 if ($lang_enabled_cb.is(':checked')) { 391 console.log("Extracting POS tags for: " + lang); 392 393 for (var ti=0; ti<universal_pos_tags.length; ti++) { 394 var tag = universal_pos_tags[ti]; 395 var lang_tag_id = lang+"-"+tag+"-htrctoken-cb"; 396 var $lang_tag_cb = $('#'+lang_tag_id); 397 if ($lang_tag_cb.is(':checked')) { 398 //var lang_tag_field = "xxxx"+lang+"_"+tag+"_htrctoken"; 399 var lang_tag_field = lang+"_"+tag+"_htrctoken"; 400 fields.push(lang_tag_field+":"+q_text); 401 } 402 } 403 } 404 } 405 406 for (var li=0; li<langs_without_pos.length; li++) { 407 var lang = langs_without_pos[li]; 408 var lang_enabled_id = lang + "-enabled"; 409 var $lang_enabled_cb = $('#'+lang_enabled_id); 410 411 if ($lang_enabled_cb.is(':checked')) { 412 console.log("Adding in non-POS field for: " + lang); 413 //var lang_tag_field = "xxxx"+lang+"_htrctoken"; 414 var lang_tag_field = lang+"_htrctoken"; 415 fields.push(lang_tag_field+":"+q_text); 416 } 417 } 418 419 if (fields.length == 0) { 420 alert("No languages selected"); 421 return; 422 } 423 424 if (qi>0) { 425 arg_q += " OR "; 426 } 427 428 arg_q += fields.join(" OR "); 429 430 } // end of for each split q_text 431 432 // Example search on one of the htrc-full-ef fields is: 433 // q=en_NOUN_htrctoken:farming 434 435 store_search_args = { q: arg_q, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows }; 436 437 store_search_args.sort="id asc"; 438 store_search_args.fl="volumeid_s,id"; 439 440 var expr_tx = "search(htrc-full-ef20"; 441 442 for (var k in store_search_args) { 443 if (store_search_args.hasOwnProperty(k)) { 444 var v = store_search_args[k]; 445 expr_tx += "," + k + "=\"" + v + "\""; 446 } 447 } 448 expr_tx += ")"; 449 } 450 451 452 if ((expr_md != "") && (expr_tx != "")) { 453 expr = "expr=intersect(" + expr_md + "," + expr_tx + ", on=\"id=volumeid_s\")"; 454 } 455 else if (expr_md != "") { 456 expr = "expr=" + expr_md; 457 } 458 else if (expr_tx != "") { 459 expr = "expr=" + expr_tx; 460 } 461 else { 462 // both empty 463 console.log("Warning: query was empty"); 464 } 465 466 467 $.ajax({ 468 type: 'GET', 469 url: store_search_action, 470 data: expr, 471 dataType: 'json', 472 success: stream_show_results, 473 error: ajax_error 474 }); 475 476 } 209 477 210 478 function submit_action(event) … … 437 705 438 706 generate_other_langs(); 439 440 $('#search-submit').click(submit_action); 707 708 if ($('#search-submit').length>0) { 709 $('#search-submit').click(submit_action); 710 } 711 712 if ($('#stream-search-submit').length>0) { 713 $('#stream-search-submit').click(stream_submit_action); 714 } 441 715 442 716 });
Note:
See TracChangeset
for help on using the changeset viewer.