Changeset 30553
- Timestamp:
- 2016-06-02T14:11:02+12:00 (7 years ago)
- Location:
- main/trunk/greenstone3/src/java/org/greenstone/gsdl3
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/DocumentAction.java
r30056 r30553 32 32 // General Java classes 33 33 import java.util.ArrayList; 34 import java.util.Arrays; 34 35 import java.util.HashMap; 35 36 import java.util.HashSet; … … 121 122 } 122 123 124 String query_terms = (String) params.get("terms"); 125 logger.error("terms = "+query_terms); 126 String query = (String) params.get("query"); 123 127 UserContext userContext = new UserContext(request); 124 128 … … 546 550 if (highlight_query_terms) 547 551 { 548 content = highlightQueryTerms(request, (Element) content);552 content = highlightQueryTermsOld(request, (Element) content); // highlightQueryTerms(query_terms, query, request.getOwnerDocument(), (Element) content); //request, (Element) content); 549 553 } 550 554 doc_nodes.item(i).appendChild(doc.importNode(content, true)); … … 597 601 dc_response_doc.removeChild(dc_response_doc_content); 598 602 599 dc_response_doc_content = highlightQueryTerms (request, dc_response_doc_content);603 dc_response_doc_content = highlightQueryTermsOld(request, dc_response_doc_content); //highlightQueryTerms(query_terms, query, request.getOwnerDocument(), dc_response_doc_content); //request, dc_response_doc_content); 600 604 dc_response_doc.appendChild(dc_response_doc.getOwnerDocument().importNode(dc_response_doc_content, true)); 601 605 } … … 839 843 * found in the text. 840 844 */ 841 protected Element highlightQueryTerms(Element request, Element dc_response_doc_content) 845 protected Element highlightQueryTerms(String terms, String performed_query, Document doc, Element dc_response_doc_content) { 846 logger.error("in highlight, terms = "+terms); 847 if (terms == null || performed_query == null) { 848 return dc_response_doc_content; 849 } 850 HashMap<String, HashSet<String>> term_to_variants_map = new HashMap<String, HashSet<String>>(); 851 HashSet<String> query_term_variants = new HashSet<String>(); 852 853 // terms in the form snail:snail,SNAILS,Snail;farm:farm,farming,Farming 854 String[] term_list = terms.split(";"); 855 for (int i=0; i<term_list.length; i++) { 856 String term_x = term_list[i]; 857 int colon_index = term_x.indexOf(';'); 858 String main_term; 859 String term_variants; 860 if (colon_index == -1) { 861 main_term = term_x; 862 term_variants = main_term; 863 } else { 864 main_term = term_x.substring(0, colon_index); 865 term_variants = term_x.substring(colon_index+1); 866 } 867 query_term_variants.add(main_term); 868 term_to_variants_map.put(main_term, new HashSet<String>(Arrays.asList(term_variants.split(",")))); 869 } 870 871 String content = GSXML.getNodeText(dc_response_doc_content); 872 873 ArrayList<ArrayList<HashSet<String>>> phrase_query_term_variants_hierarchy = new ArrayList<ArrayList<HashSet<String>>>(); 874 875 //Element query_element = GSXML.getNamedElement(metadata_list, GSXML.METADATA_ELEM, GSXML.NAME_ATT, "query"); 876 //String performed_query = //GSXML.getNodeText(query_element) + " "; 877 878 ArrayList<HashSet<String>> phrase_query_p_term_variants_list = new ArrayList<HashSet<String>>(); 879 int term_start = 0; 880 boolean in_term = false; 881 boolean in_phrase = false; 882 for (int i = 0; i < performed_query.length(); i++) 883 { 884 char character = performed_query.charAt(i); 885 boolean is_character_letter_or_digit = Character.isLetterOrDigit(character); 886 887 // Has a query term just started? 888 if (in_term == false && is_character_letter_or_digit == true) 889 { 890 in_term = true; 891 term_start = i; 892 } 893 894 // Or has a term just finished? 895 else if (in_term == true && is_character_letter_or_digit == false) 896 { 897 in_term = false; 898 String term = performed_query.substring(term_start, i); 899 HashSet<String> phrase_query_p_term_x_variants = term_to_variants_map.get(term); 900 // Element term_element = GSXML.getNamedElement(query_term_list_element, GSXML.TERM_ELEM, GSXML.NAME_ATT, term); 901 // if (term_element != null) 902 // { 903 904 // HashSet<String> phrase_query_p_term_x_variants = new HashSet<String>(); 905 906 // NodeList term_equivalent_terms_nodelist = term_element.getElementsByTagName("equivTermList"); 907 // if (term_equivalent_terms_nodelist == null || term_equivalent_terms_nodelist.getLength() == 0) 908 // { 909 // String termValueU = null; 910 // String termValueL = null; 911 912 // if (term.length() > 1) 913 // { 914 // termValueU = term.substring(0, 1).toUpperCase() + term.substring(1); 915 // termValueL = term.substring(0, 1).toLowerCase() + term.substring(1); 916 // } 917 // else 918 // { 919 // termValueU = term.substring(0, 1).toUpperCase(); 920 // termValueL = term.substring(0, 1).toLowerCase(); 921 // } 922 923 // phrase_query_p_term_x_variants.add(termValueU); 924 // phrase_query_p_term_x_variants.add(termValueL); 925 // } 926 // else 927 // { 928 // for (int j = 0; j < term_equivalent_terms_nodelist.getLength(); j++) 929 // { 930 // Element term_equivalent_terms_element = (Element) term_equivalent_terms_nodelist.item(j); 931 // String[] term_equivalent_terms = GSXML.getAttributeValuesFromList(term_equivalent_terms_element, GSXML.NAME_ATT); 932 // for (int k = 0; k < term_equivalent_terms.length; k++) 933 // { 934 // phrase_query_p_term_x_variants.add(term_equivalent_terms[k]); 935 // } 936 // } 937 // } 938 if (phrase_query_p_term_x_variants != null) { 939 phrase_query_p_term_variants_list.add(phrase_query_p_term_x_variants); 940 941 if (in_phrase == false) 942 { 943 phrase_query_term_variants_hierarchy.add(phrase_query_p_term_variants_list); 944 phrase_query_p_term_variants_list = new ArrayList<HashSet<String>>(); 945 } 946 } 947 //} 948 } 949 // Watch for phrases (surrounded by quotes) 950 if (character == '\"') 951 { 952 // Has a phrase just started? 953 if (in_phrase == false) 954 { 955 in_phrase = true; 956 } 957 // Or has a phrase just finished? 958 else if (in_phrase == true) 959 { 960 in_phrase = false; 961 phrase_query_term_variants_hierarchy.add(phrase_query_p_term_variants_list); 962 } 963 964 phrase_query_p_term_variants_list = new ArrayList<HashSet<String>>(); 965 } 966 } 967 968 return highlightQueryTermsInternal(doc, content, query_term_variants, phrase_query_term_variants_hierarchy); 969 } 970 protected Element highlightQueryTermsOld(Element request, Element dc_response_doc_content) 842 971 { 843 972 Document doc = request.getOwnerDocument(); … … 1065 1194 private Element highlightQueryTermsInternal(Document doc, String content, HashSet<String> query_term_variants, ArrayList<ArrayList<HashSet<String>>> phrase_query_term_variants_hierarchy) 1066 1195 { 1196 1197 logger.error("size = "+ query_term_variants.size()); 1067 1198 // Convert the content string to an array of characters for speed 1068 1199 char[] content_characters = new char[content.length()]; -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/collection/ServiceCluster.java
r28966 r30553 93 93 94 94 protected Element display_item_list = null; 95 /** extra stuff */ 96 protected Element extra_info = null; 95 97 /** default values for servlet params */ 96 98 protected Element library_param_list = null; … … 146 148 this.library_param_list = this.desc_doc.createElement(GSXML.LIBRARY_PARAM_ELEM+GSXML.LIST_MODIFIER); 147 149 this.service_list = this.desc_doc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 150 this.extra_info = this.desc_doc.createElement(GSXML.EXTRA_INFO_ELEM); 148 151 //this.plugin_item_list = this.desc_doc.createElement(GSXML.PLUGIN_ELEM + GSXML.LIST_MODIFIER); 149 152 } … … 273 276 } 274 277 } 275 276 } 278 279 // get any extra info 280 Element info = (Element) GSXML.getChildByTagName(service_cluster_info, GSXML.EXTRA_INFO_ELEM); 281 if (info != null) { 282 if (!addExtraInfo(info)) { 283 logger.error("couldn't add extra info"); 284 } 285 } 286 287 } 277 288 /** 278 289 * adds metadata from a metadataList into the metadata_list xml … … 336 347 return true; 337 348 } 349 350 protected boolean addExtraInfo(Element info) { 351 if (info == null) { 352 return false; 353 } 354 NodeList children = info.getChildNodes(); 355 for(int i=0; i<children.getLength(); i++) { 356 this.extra_info.appendChild(this.desc_doc.importNode(children.item(i), true)); 357 } 358 return true; 359 } 338 360 339 361 // protected boolean addPlugins(Element plugin_list) … … 652 674 description.appendChild(result_doc.importNode(this.metadata_list, true)); 653 675 description.appendChild(result_doc.importNode(this.library_param_list, true)); 676 description.appendChild(result_doc.importNode(this.extra_info, true)); 654 677 //description.appendChild(this.plugin_item_list); 655 678 return response; … … 682 705 description.appendChild(result_doc.importNode(this.library_param_list, true)); 683 706 } 707 else if (info.equals(GSXML.EXTRA_INFO_ELEM)) { 708 description.appendChild(result_doc.importNode(this.extra_info, true)); 709 } 684 710 } 685 711 } … … 769 795 * } 770 796 */ 797 771 798 if (type.equals(GSXML.REQUEST_TYPE_SYSTEM)) 772 799 { … … 780 807 return response; 781 808 } 782 783 809 protected Element processSystemRequest(Element request) 784 810 { -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/TransformingReceptionist.java
r30477 r30553 926 926 // return XMLTransformer.constructErrorXHTMLPage("Cannot parse the xslt file\n");// + errorPage); 927 927 // } 928 logger.error("style_doc is null, returning the page"); 928 929 return page; 929 930 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/OAIPMH.java
r29267 r30553 556 556 protected void addMetadata(Element meta_list_elem, String meta_name, DBInfo info) { 557 557 Vector<String> values = info.getMultiInfo(meta_name); 558 for (int i=0; i<values.size(); i++) { 559 addMetadataElement(meta_list_elem, meta_name, values.get(i)); 558 if (values != null && values.size()!=0) { 559 for (int i=0; i<values.size(); i++) { 560 addMetadataElement(meta_list_elem, meta_name, values.get(i)); 561 } 560 562 } 561 563 }
Note:
See TracChangeset
for help on using the changeset viewer.