Changeset 31624


Ignore:
Timestamp:
04/21/17 01:02:28 (4 years ago)
Author:
davidb
Message:

Combined volume md and full-text page searching

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

Legend:

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

    r31623 r31624  
    173173        <input type="hidden" id="rows" name="rows" value="20"/>
    174174
     175        <!--
    175176        <input type="text"   class="search-in-progress" id="q" name="q" style="width: 600px;"/>
    176         <input type="submit" class="search-in-progress" id="search-submit" />
     177        <input type="submit" class="search-in-progress" id="search-submit" />       
    177178        <br>
    178           <input type="checkbox" id="group-results-by-id" name="group-results-by-vol" value="on">Group by Volume
    179           <input type="checkbox" id="search-all-langs"    name="search-all-langs"     value="on">Search all Languages
     179        -->
    180180       
    181         <div id="pos-fieldsets">
    182         </div>     
    183 
    184         <fieldset class="show-hide-lang">
    185           <legend style="margin-bottom: 5px; padding-top: 15px;">
    186             Other Languages (without modelled parts-of-speech)
    187           </legend>
    188           <div id="other-langs">
    189           </div>
    190         </fieldset>
    191 
     181        <table class="query-table">
     182          <tr>
     183            <td>Volume Metadata:</td>
     184            <td><input type="text"   class="search-in-progress" id="vq" name="vq"
     185                   placeholder="metaname:metavalue e.g., title_t:farming"
     186                   style="width: 600px;"/><br />
     187              <input type="checkbox" id="search-all-vfields" name="search-all-vfields" value="on">&nbsp;Search all volume fields
     188            </td>
     189          </tr>
     190          <tr>
     191            <td></td>
     192            <td style="color: #aaaaaa; width: 400px; font-size: 14px; line-height: 16px; padding-bottom: 10px;">
     193              Indexed volume metadata fields: accessProfile_t, genre_t,
     194              imprint_t, isbn_t, issn_t, issuance_t,
     195              language_t, lccn_t, names_t, oclc_t,
     196              pubPlace_t, pubDate_t, rightsAttributes_t,
     197              title_t, typeOfResource_t
     198            </td>
     199          </tr>
     200          <tr>
     201            <td>Page-level text:</td>
     202            <td>
     203              <input type="text"   class="search-in-progress" id="q" name="q"
     204                 style="width: 600px;"/><br />
     205              <input type="checkbox" id="group-results-by-id" name="group-results-by-vol" value="on">&nbsp;<span>Group by Volume</span>
     206
     207            </td>
     208          </tr>
     209          <tr>
     210            <td></td>
     211            <td >
     212              <input type="submit" class="search-in-progress" id="search-submit" style="float: right;"/>
     213            </td>
     214          </tr>
     215        </table>
     216
     217               
     218
     219        <div>
     220          <input type="checkbox" id="search-all-langs"    name="search-all-langs"     value="on">&nbsp;Search all Languages
     221       
     222          <div id="pos-fieldsets">
     223          </div>       
     224         
     225          <fieldset class="show-hide-lang">
     226            <legend style="margin-bottom: 5px; padding-top: 15px;">
     227              Other Languages (without modelled parts-of-speech)
     228            </legend>
     229            <div id="other-langs">
     230            </div>
     231          </fieldset>
     232        </div>
     233       
    192234          </form>
    193235
     
    215257    <li><a href="admin.html">HTRC-EF Solr Admin UI (log in)</a></li>
    216258    <li><a href="luke_lang_mappings.html">Dynamically Generated Language Map (Part-of-Speech, and Other)</a></li>
    217     <!--
    218     <li><a href="/solr/htrc-full-ef_shard6_replica1/admin/luke">Luke XML on shard</a></li>
    219 -->
    220259    <li><a href="/solr/htrc-full-ef20_shard6_replica1/admin/luke">Luke XML on shard</a></li>
    221260      </ul>
  • other-projects/hathitrust/wcsa/extracted-features-solr/trunk/web-portal/index.js

    r31619 r31624  
    7272    var page = id_pages[pi];
    7373   
    74     var seqnum = page;
     74    var seqnum = (page==0) ? 1 : page;
    7575    var babel_url = "https://babel.hathitrust.org/cgi/pt?id="+id+";view=1up;seq="+seqnum;
    7676
     
    8181        html_item += '<span style="font-style: italic;" name="'
    8282                     +id+'"><span style="cursor: progress;">Loading ...</span></span><br>';
    83 
    84         html_item += id + ': <a target="_blank" href="' + babel_url + '">seq ' + seqnum + '</a> ';
     83        if (page > 0) {
     84            html_item += id + ': <a target="_blank" href="' + babel_url + '">seq ' + seqnum + '</a> ';
     85        }
     86        else {
     87            // skip linking to the 'phony' page 0
     88            html_item += id;
     89        }
    8590        }
    8691        else {
     
    9297        html_item += ' <span style="font-style: italic;" name="'
    9398                 +id+'"><span style="cursor: progress;">Loading ...</span></span><br>';
    94         html_item += '<a target="_blank" href="' + babel_url + '">' + id + ', seq ' + seqnum + '</a>';
     99
     100        if (page > 0) {
     101        html_item += '<a target="_blank" href="' + babel_url + '">' + id + ', seq ' + seqnum + '</a>';
     102        }
     103        else {
     104        html_item += '<a target="_blank" href="' + babel_url + '">' + id + ', all pages</a>';
     105        }
     106       
    95107        html_item += '</p>';
    96108    }
     
    141153    var id_and_page = doc.id.split(".page-");
    142154    var id = id_and_page[0];
    143     var seqnum = parseInt(id_and_page[1]) +1; // fix up ingest error
     155    var seqnum;
     156    if (id_and_page.length>1) {
     157        seqnum = parseInt(id_and_page[1]) +1; // fix up ingest error
     158    }
     159    else {
     160        seqnum = 0;
     161    }
    144162    var page = seqnum;
    145163
     
    195213
    196214var group_by_vol_checked = 0;
     215
     216function expand_vfield(q_term,all_vfields)
     217{
     218    var vfields = [];
     219    var metadata_fields = [  "accessProfile_t", "genre_t", "imprint_t", "isbn_t", "issn_t",
     220                 "issuance_t", "language_t", "lccn_t", "names_t", "oclc_t",
     221                 "pubPlace_t", "pubDate_t", "rightsAttributes_t", "title_t", "typeOfResource_t"  ];
     222   
     223    if (all_vfields) {
     224    for (var fi=0; fi<metadata_fields.length; fi++) {
     225        var vfield = metadata_fields[fi];
     226        vfields.push(vfield+":"+q_term);
     227    }
     228    }
     229    else {
     230    if (q_term.match(/:/)) {
     231        vfields.push(q_term);
     232    }
     233    else {
     234        // make searching by title the default
     235        vfields.push("title_t:"+q_term);
     236    }
     237    }
     238   
     239
     240    var vfields_str = vfields.join(" OR ");
     241   
     242    return vfields_str;
     243}
     244
     245function expand_vquery_field_and_boolean(query,all_vfields)
     246{
     247    // boolean terms
     248    //  => pos and lang field
     249    if (query === "") { return "" }
     250   
     251    var query_terms = query.split(/\s+/);
     252    var query_terms_len = query_terms.length;
     253
     254    var bool_query_term = [];
     255
     256    var i=0;
     257    var prev_bool = "";
     258
     259    for (var i=0; i<query_terms_len; i++) {
     260    var term = query_terms[i];
     261    if (term.match(/^(and|or)$/i)) {
     262        prev_bool = term.toUpperCase();     
     263    }
     264    else {
     265        if (i>0) {
     266        if (prev_bool == "") {
     267            prev_bool = "AND";
     268        }
     269        }
     270       
     271        var expanded_term = expand_vfield(term,all_vfields); // **** only difference to POS version
     272       
     273        term = "(" + expanded_term + ")";
     274
     275        if (prev_bool != "") {
     276        bool_query_term.push(prev_bool);
     277        prev_bool = "";
     278        }
     279        bool_query_term.push(term);
     280    }
     281    }
     282
     283    var bool_query = bool_query_term.join(" ");
     284
     285    return bool_query;
     286}
    197287
    198288
     
    242332    // boolean terms
    243333    //  => pos and lang field
     334    if (query === "") { return "" }
    244335   
    245336    var query_terms = query.split(/\s+/);
     
    293384    var arg_start  = $('#start').attr('value');
    294385    var arg_rows   = $('#rows').attr('value');
     386
    295387    var q_text     = $('#q').val();
    296 
     388    var vq_text     = $('#vq').val();
     389   
    297390    group_by_vol_checked = $('#group-results-by-id:checked').length;
    298     var search_all_checked = $('#search-all-langs:checked').length;
    299    
    300     if (q_text === "") {
     391
     392    var search_all_langs_checked = $('#search-all-langs:checked').length;
     393    var search_all_vfields_checked = $('#search-all-vfields:checked').length;
     394   
     395    if ((q_text === "") && (vq_text === "")) {
    301396    $('.search-in-progress').css("cursor","auto");
    302     alert("No query term entered");
     397    alert("No query term(s) entered");
    303398    return;
    304399    }
    305400
    306     arg_q = expand_query_field_and_boolean(q_text,langs_with_pos,langs_without_pos,search_all_checked);
    307 
     401    arg_vq = expand_vquery_field_and_boolean(vq_text,search_all_vfields_checked);
     402   
     403    arg_q = expand_query_field_and_boolean(q_text,langs_with_pos,langs_without_pos,search_all_langs_checked);
     404
     405    //console.log("*** arg_vq = " + arg_vq);
     406    //console.log("*** arg_q = " + arg_q);
     407   
    308408    if (arg_q == "") {
    309     $('.search-in-progress').css("cursor","auto");
    310     alert("No languages selected");
    311     return;
    312     }
    313    
     409    if (arg_vq == "") {
     410        // arg_vq was empty to start with, but attempt to expand non-empty arg_q
     411        //   lead to an empty arg_q being returned
     412        $('.search-in-progress').css("cursor","auto");
     413        alert("No languages selected");
     414        return;
     415    }
     416    else {
     417        arg_q = arg_vq;
     418    }
     419    }
     420    else {
     421    if (arg_vq != "") {
     422        // join the two with an AND
     423        arg_q = "(" + arg_vq + ")" + " OR " + "(" + arg_q + ")";
     424
     425        // also implies
     426        group_by_vol_checked = true;
     427    }
     428    }
     429
     430    //console.log("*** NOW arg_q = " + arg_q);
    314431   
    315432    // Example search on one of the htrc-full-ef fields is:
Note: See TracChangeset for help on using the changeset viewer.