Changeset 31614

Show
Ignore:
Timestamp:
20.04.2017 18:17:56 (2 years ago)
Author:
davidb
Message:

Separate off stream query page

Location:
other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal
Files:
1 added
2 modified

Legend:

Unmodified
Added
Removed
  • other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/index.js

    r31613 r31614  
    5959} 
    6060 
    61 function stream_generate_item(line,id,title) 
    62 { 
    63     var css_class = (line%2 == 0) ? 'class="evenline"' : 'class="oddline"'; 
    64      
    65     var html_item = ""; 
    66  
    67  
    68     var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+1; 
    69  
    70     html_item += '<p ' + css_class + '>'; 
    71     //html_item += ' <span style="font-style: italic;" name="'+id+'"></span><br>'; 
    72     html_item += '<a target="_blank" href="' + babel_url + '">' + id + ': ' + title + '</a>'; 
    73     html_item += '</p>'; 
    74  
    75     return html_item; 
    76 } 
    77  
    78  
    7961function generate_item(line,id,id_pages) 
    8062{ 
     
    126108} 
    127109 
    128 function stream_show_results(jsonData) { 
    129     var docs = jsonData["result-set"].docs; 
    130     var num_docs = docs.length -1; 
    131  
    132     $('.search-in-progress').css("cursor","auto"); 
    133      
    134     var $search_results = $('#search-results'); 
    135  
    136     if (num_docs>0) { 
    137     $search_results.html("<p>Results: " + num_docs + " volumes matched</p>"); 
    138     /* 
    139     var from = parseInt(store_search_args.start); 
    140     var to = from + num_rows; 
    141     $search_results.append("<p>Showing matches: "+from+"-" + to + "</p>"); 
    142     */ 
    143     } 
    144     else { 
    145     $search_results.html("<p>No volumes matched your query</p>"); 
    146     } 
    147  
    148     for (var i=0; i<num_docs; i++) { 
    149     var doc = docs[i]; 
    150     var id = doc.id; 
    151     var title = doc.title_t; 
    152  
    153     var html_item = stream_generate_item(i,id,title); 
    154     $search_results.append(html_item); 
    155     } 
    156     return; 
    157     // **** 
    158      
    159     var htids = []; 
    160  
    161     var prev_id = null; 
    162     var prev_pages = []; 
    163      
    164     var i=0; 
    165     var line_num = 0; 
    166     while (i<num_docs) { 
    167 //    for (var i=0; i<num_docs; i++) { 
    168     var doc = docs[i]; 
    169     var id_and_page = doc.id.split(".page-"); 
    170     var id = id_and_page[0]; 
    171     var seqnum = parseInt(id_and_page[1]) +1; // fix up ingest error 
    172     //var page = seqnum+1; 
    173     //var page = seqnum-1; 
    174     var page = seqnum; 
    175  
    176     if ((prev_id != null) && (id != prev_id)) { 
    177         // time to output previous item 
    178         var html_item = generate_item(line_num,prev_id,prev_pages); 
    179         $search_results.append(html_item); 
    180         line_num++; 
    181         prev_pages = [page]; 
    182     } 
    183     else { 
    184         // accumulate pages 
    185         prev_pages.push(page) 
    186     } 
    187      
    188     htids.push("htid:"+id); 
    189  
    190     prev_id = id; 
    191     i++; 
    192     } 
    193      
    194     var html_item = generate_item(line_num,prev_id,prev_pages); 
    195     $search_results.append(html_item); 
    196  
    197      
    198     document.location.href="#search-results-anchor"; 
    199      
    200     var next_prev = '<p style="width:100%;"><div id="search-prev" style="float: left;"><a>&lt; Previous</a></div><div id="search-next" style="float: right;"><a>Next &gt;</a></div></p>'; 
    201      
    202     $search_results.append(next_prev); 
    203     $('#search-prev').click(function(event) { show_new_results(-1*num_rows); }); 
    204     $('#search-next').click(function(event) { show_new_results(num_rows); }); 
    205  
    206     var search_start = store_search_args.start; 
    207     if (search_start==0) { 
    208     $('#search-prev').hide(); 
    209     } 
    210      
    211     // Example URL for catalog metadata (multiple items) 
    212     // http://catalog.hathitrust.org/api/volumes/brief/json/id:552;lccn:70628581|isbn:0030110408 
    213  
    214     var htids_str = htids.join("|",htids); 
    215     var cat_url = "http://catalog.hathitrust.org/api/volumes/brief/json/" + htids_str; 
    216         $.ajax({ 
    217         url: cat_url, 
    218         dataType: 'jsonp', 
    219         jsonpCallback: "add_titles" 
    220     }); 
    221  
    222  
    223     //var json_pretty = JSON.stringify(jsonData.response, null, '\t'); 
    224     //$('#search-results').text(json_pretty) 
    225 } 
    226110 
    227111 
     
    416300 
    417301 
    418 function stream_submit_action(event) 
    419 { 
    420     event.preventDefault(); 
    421  
    422     $('.search-in-progress').css("cursor","wait"); 
    423  
    424     var vq_text     = $('#vq').val(); 
    425      
    426     store_search_action = $('#search-form').attr("action"); 
    427      
    428     var arg_indent = $('#indent').attr('value'); 
    429     var arg_wt     = $('#wt').attr('value'); 
    430     var arg_start  = $('#start').attr('value'); 
    431     var arg_rows   = $('#rows').attr('value'); 
    432     var q_text     = $('#q').val(); 
    433  
    434     group_by_vol_checked = $('#group-results-by-id:checked').length; 
    435  
    436      
    437     if ((q_text === "") && (vq_text === "")) { 
    438     $('.search-in-progress').css("cursor","auto"); 
    439     alert("No query term entered"); 
    440     return; 
    441     } 
    442  
    443     var expr_all = ""; 
    444     var expr_md = ""; 
    445     var expr_tx = ""; 
    446      
    447     if (vq_text !== "") { 
    448     // simplified case of issuing a volume-based metadata query 
    449     //expr=search(col,q,fl,sort,rows) 
    450  
    451      
    452     //var expr = "expr=search("; 
    453     expr_md = "search("; 
    454     expr_md += "htrc-full-ef20"; 
    455     expr_md += ",q=\""+vq_text+"\""; 
    456     expr_md += ",fl=\"volumeid_s,id,title_t\""; 
    457     expr_md += ",sort=\"id asc"+"\""; 
    458     expr_md += ",indent=\""+arg_indent+"\""; 
    459     expr_md += ",wt=\""+arg_wt+"\""; 
    460     expr_md += ",start=\""+arg_start+"\""; 
    461     expr_md += ",rows=\""+arg_rows+"\""; 
    462     expr_md += ")"; 
    463      
    464     store_search_args = { q: vq_text, indent: arg_indent, wt: arg_wt, 
    465                   start: arg_start, rows: arg_rows }; 
    466     } 
    467  
    468     if (q_text !== "") { 
    469      
    470     var fields = []; 
    471     var universal_pos_tags = [ "VERB", "NOUN", "ADJ", "ADV", "ADP", "CONJ", "DET", "NUM", "PRT", "X" ]; 
    472  
    473     var arg_q = ""; 
    474      
    475     var split_q_text = q_text.split(/\s+/); 
    476     for (var qi=0; qi<split_q_text.length; qi++) { 
    477         q_text = split_q_text[qi]; 
    478          
    479         for (var li=0; li<langs_with_pos.length; li++) { 
    480         var lang = langs_with_pos[li]; 
    481         var lang_enabled_id = lang + "-enabled"; 
    482         var $lang_enabled_cb = $('#'+lang_enabled_id); 
    483         if ($lang_enabled_cb.is(':checked')) { 
    484             console.log("Extracting POS tags for: " + lang); 
    485              
    486             for (var ti=0; ti<universal_pos_tags.length; ti++) { 
    487             var tag = universal_pos_tags[ti]; 
    488             var lang_tag_id = lang+"-"+tag+"-htrctoken-cb"; 
    489             var $lang_tag_cb = $('#'+lang_tag_id); 
    490             if ($lang_tag_cb.is(':checked')) { 
    491                 //var lang_tag_field = "xxxx"+lang+"_"+tag+"_htrctoken"; 
    492                 var lang_tag_field = lang+"_"+tag+"_htrctoken"; 
    493                 fields.push(lang_tag_field+":"+q_text); 
    494             } 
    495             } 
    496         } 
    497         } 
    498          
    499         for (var li=0; li<langs_without_pos.length; li++) { 
    500         var lang = langs_without_pos[li]; 
    501         var lang_enabled_id = lang + "-enabled"; 
    502         var $lang_enabled_cb = $('#'+lang_enabled_id); 
    503          
    504         if ($lang_enabled_cb.is(':checked')) { 
    505             console.log("Adding in non-POS field for: " + lang); 
    506             //var lang_tag_field = "xxxx"+lang+"_htrctoken"; 
    507             var lang_tag_field = lang+"_htrctoken"; 
    508             fields.push(lang_tag_field+":"+q_text);      
    509         } 
    510         } 
    511      
    512         if (fields.length == 0) { 
    513         alert("No languages selected"); 
    514         return; 
    515         } 
    516  
    517         if (qi>0) { 
    518         arg_q += " OR "; 
    519         } 
    520          
    521         arg_q += fields.join(" OR "); 
    522      
    523     } // end of for each split q_text 
    524      
    525     // Example search on one of the htrc-full-ef fields is:  
    526     //  q=en_NOUN_htrctoken:farming 
    527      
    528     store_search_args = { q: arg_q, indent: arg_indent, wt: arg_wt, start: arg_start, rows: arg_rows }; 
    529  
    530     store_search_args.sort="id asc"; 
    531     store_search_args.fl="volumeid_s,id"; 
    532      
    533     var expr_tx = "search(htrc-full-ef20"; 
    534      
    535     for (var k in store_search_args) { 
    536         if (store_search_args.hasOwnProperty(k)) { 
    537         var v = store_search_args[k]; 
    538         expr_tx += "," + k + "=\"" + v + "\""; 
    539         } 
    540     } 
    541     expr_tx += ")"; 
    542     } 
    543      
    544  
    545     if ((expr_md != "") && (expr_tx != "")) { 
    546     expr = "expr=intersect(" + expr_md + "," + expr_tx  + ", on=\"id=volumeid_s\")"; 
    547     } 
    548     else if (expr_md != "") { 
    549     expr = "expr=" + expr_md; 
    550     } 
    551     else if (expr_tx != "") { 
    552     expr = "expr=" + expr_tx; 
    553     } 
    554     else { 
    555     // both empty 
    556     console.log("Warning: query was empty"); 
    557     } 
    558      
    559  
    560     $.ajax({ 
    561     type: 'GET', 
    562     url: store_search_action, 
    563     data: expr, 
    564     dataType: 'json', 
    565     success: stream_show_results, 
    566     error: ajax_error 
    567     }); 
    568  
    569 } 
    570  
    571302function submit_action(event) 
    572303{ 
     
    813544    } 
    814545     
    815     if ($('#stream-search-submit').length>0) { 
    816     $('#stream-search-submit').click(stream_submit_action); 
    817     } 
    818  
    819546}); 
  • other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/stream-query.html

    r31570 r31614  
    2929    <script src="iso-639-1.js"></script> <!-- defined var 'isoLangs' --> 
    3030    <script src="index.js"></script> 
     31    <script src="stream-index.js"></script> 
    3132  </head> 
    3233  <body>