Changeset 31245

Show
Ignore:
Timestamp:
18.12.2016 17:18:13 (3 years ago)
Author:
davidb
Message:

Refactored so processing of words from TokenPosCount? now done by the same sub-routine

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • other-projects/hathitrust/wcsa/extracted-features-solr/trunk/solr-ingest/src/main/java/org/hathitrust/extractedfeatures/SolrDocJSON.java

    r31244 r31245  
    2424public class SolrDocJSON { 
    2525 
    26     protected static String generateSolrText(JSONObject ef_token_pos_count, WhitelistBloomFilter whitelist_bloomfilter) 
    27         { 
    28             boolean solr_icu_tokenize = true; 
    29          
    30             ArrayList<String> tokens = new ArrayList<String>(); 
    31              
     26    protected static ArrayList<String> getTokenPosCountWords(JSONObject ef_token_pos_count, String page_id) 
     27    { 
     28        boolean solr_icu_tokenize = true; 
     29         
     30        ArrayList<String> words = new ArrayList<String>(); 
     31         
     32        if (ef_token_pos_count != null) { 
     33 
    3234            Iterator<String> token_iter = ef_token_pos_count.keys(); 
    33              
    3435            while (token_iter.hasNext()) { 
    3536                String token = token_iter.next(); 
    36  
     37                 
    3738                if (solr_icu_tokenize == true) { 
    3839                    Reader reader = new StringReader(token); 
     
    4849                        while (tokenizer.incrementToken()) { 
    4950                            String term = charTermAttribute.toString(); 
    50                             tokens.add(term); 
     51                            words.add(term); 
    5152                        } 
    5253                         
     
    5960                } 
    6061                else { 
    61                     tokens.add(token); 
    62                 } 
    63             } 
    64              
    65             StringBuilder sb = new StringBuilder(); 
    66              
    67             if (whitelist_bloomfilter == null) { 
    68  
    69                 boolean first_append = true; 
    70                  
    71                 for (int i=0; i<tokens.size(); i++) { 
    72                     String token = tokens.get(i); 
    73                                      
     62                    words.add(token); 
     63                } 
     64            }                
     65        } 
     66        else { 
     67            System.err.println("Warning: empty tokenPosCount field for '" + page_id + "'"); 
     68        } 
     69         
     70        /* Alternative way to get at keys 
     71        Set<String> token_keys = ef_token_pos_count.keySet(); 
     72        for (String token : token_keys) { 
     73                sb.append(token + " "); 
     74        } 
     75*/ 
     76        return words; 
     77    } 
     78     
     79     
     80    protected static String generateSolrText(JSONObject ef_token_pos_count, String page_id, 
     81                                            WhitelistBloomFilter whitelist_bloomfilter) 
     82    { 
     83        ArrayList<String> tokens = getTokenPosCountWords(ef_token_pos_count, page_id); 
     84 
     85        StringBuilder sb = new StringBuilder(); 
     86 
     87        if (whitelist_bloomfilter == null) { 
     88 
     89            boolean first_append = true; 
     90 
     91            for (int i=0; i<tokens.size(); i++) { 
     92                String token = tokens.get(i); 
     93 
     94                if (!first_append) { 
     95                    sb.append(" "); 
     96                } 
     97                else { 
     98                    first_append = false; 
     99                } 
     100                sb.append(token); 
     101            } 
     102        } 
     103        else { 
     104            boolean first_append = true; 
     105 
     106            for (int i=0; i<tokens.size(); i++) { 
     107                String token = tokens.get(i); 
     108 
     109                if (whitelist_bloomfilter.contains(token)) { 
    74110                    if (!first_append) { 
    75111                        sb.append(" "); 
     
    79115                    } 
    80116                    sb.append(token); 
    81                 } 
    82             } 
    83             else { 
    84                 boolean first_append = true; 
    85                  
    86                 for (int i=0; i<tokens.size(); i++) { 
    87                     String token = tokens.get(i); 
    88                      
    89                     if (whitelist_bloomfilter.contains(token)) { 
    90                         if (!first_append) { 
    91                             sb.append(" "); 
    92                         } 
    93                         else { 
    94                             first_append = false; 
    95                         } 
    96                         sb.append(token); 
    97                     }                    
    98                 } 
    99                      
    100             } 
    101             /* 
    102             Set<String> token_keys = ef_token_pos_count.keySet(); 
    103             for (String token : token_keys) { 
    104                     sb.append(token + " "); 
    105             } 
    106     */ 
    107              
    108            return sb.toString(); 
    109         } 
     117                }                    
     118            } 
     119 
     120        } 
     121 
     122 
     123        return sb.toString(); 
     124    } 
    110125 
    111126    protected static JSONObject generateSolrDocJSON(String volume_id, String page_id, JSONObject ef_page, 
     
    122137                    JSONObject solr_add_json = new JSONObject(); 
    123138     
    124                     String text = generateSolrText(ef_token_pos_count,whitelist_bloomfilter); 
     139                    String text = generateSolrText(ef_token_pos_count,page_id,whitelist_bloomfilter); 
    125140                     
    126141                    JSONObject solr_doc_json = new JSONObject(); 
     
    200215    protected static ArrayList<String> generateTokenPosCountText(String volume_id, String page_id, JSONObject ef_page)  
    201216    { 
    202         ArrayList<String> word_list = new ArrayList<String>(); 
     217        ArrayList<String> word_list = null; 
    203218         
    204219        if (ef_page != null) { 
     
    206221            if (ef_body != null) { 
    207222                JSONObject ef_token_pos_count = ef_body.getJSONObject("tokenPosCount"); 
    208                 if (ef_token_pos_count != null) { 
    209      
    210                     Iterator<String> token_iter = ef_token_pos_count.keys(); 
    211                     while (token_iter.hasNext()) { 
    212                         String token = token_iter.next(); 
    213                         word_list.add(token); 
    214                     }                
    215                 } 
    216                 else { 
    217                     System.err.println("Warning: empty tokenPosCount field for '" + page_id + "'"); 
    218                 } 
     223                word_list = getTokenPosCountWords(ef_token_pos_count,page_id); 
    219224            } 
    220225            else {