Changeset 27800
- Timestamp:
- 2013-07-11T11:40:39+12:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/SharedSoleneGS2FieldSearch.java
r25853 r27800 25 25 import org.greenstone.LuceneWrapper3.SharedSoleneQuery; 26 26 import org.greenstone.gsdl3.util.GSXML; 27 import org.w3c.dom.Document; 27 28 import org.w3c.dom.Element; 28 29 import org.w3c.dom.NodeList; … … 33 34 { 34 35 protected static final String RANK_PARAM_RANK_VALUE = "rank"; 36 protected static final String SORT_ELEM = "sort"; 35 37 36 38 static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.SharedSoleneGS2FieldSearch.class.getName()); … … 56 58 } 57 59 60 // the search element 61 Element config_search = (Element) GSXML.getChildByTagName(extra_info, GSXML.SEARCH_ELEM); 62 Document owner = info.getOwnerDocument(); 63 // get out the sort fields 64 NodeList sort_nodes = info.getElementsByTagName(SORT_ELEM); 65 66 for (int i = 0; i < sort_nodes.getLength(); i++) 67 { 68 Element sort = (Element) sort_nodes.item(i); 69 String name = sort.getAttribute(GSXML.NAME_ATT); 70 Element node_extra = GSXML.getNamedElement(config_search, SORT_ELEM, GSXML.NAME_ATT, name); 71 if (node_extra == null) 72 { 73 logger.error("haven't found extra info for sort field named " + name); 74 continue; 75 } 76 77 // get the display elements if any - displayName 78 NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM); 79 if (display_names != null) 80 { 81 for (int j = 0; j < display_names.getLength(); j++) 82 { 83 Element e = (Element) display_names.item(j); 84 sort.appendChild(owner.importNode(e, true)); 85 } 86 } 87 } // for each sortfield 58 88 // Lucene/Solr doesn't do case folding or stemming or accent folding at the 59 89 // moment … … 69 99 { 70 100 super.addCustomQueryParams(param_list, lang); 71 /** Lucene's/Solr's rank param is based on indexfields, not ranked/not */101 /** Lucene's/Solr's rank (sort) param is based on sort fields, not ranked/not */ 72 102 createParameter(RANK_PARAM, param_list, lang); 73 103 } … … 82 112 // get the fields 83 113 ArrayList<String> fields = new ArrayList<String>(); 84 fields.add(RANK_PARAM_RANK_VALUE);114 //fields.add(RANK_PARAM_RANK_VALUE); 85 115 ArrayList<String> field_names = new ArrayList<String>(); 86 field_names.add(getTextString("param.sortBy.rank", lang));87 getSort ByIndexData(fields, field_names, lang);116 //field_names.add(getTextString("param.sortBy.rank", lang)); 117 getSortData(fields, field_names, lang); 88 118 89 119 param = GSXML.createParameterDescription2(this.doc, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, fields.get(0), fields, field_names); … … 97 127 super.createParameter(name, param_list, lang); 98 128 } 99 } 100 129 130 } 131 132 protected void getSortData(ArrayList<String> sort_ids, ArrayList<String> sort_names, String lang) { 133 134 Element sort_list = (Element) GSXML.getChildByTagName(this.config_info, SORT_ELEM + GSXML.LIST_MODIFIER); 135 NodeList sorts = sort_list.getElementsByTagName(SORT_ELEM); 136 int len = sorts.getLength(); 137 for (int i = 0; i < len; i++) 138 { 139 Element sort = (Element) sorts.item(i); 140 String shortname = sort.getAttribute(GSXML.SHORTNAME_ATT); 141 sort_ids.add(shortname); 142 String display_name = GSXML.getDisplayText(sort, GSXML.DISPLAY_TEXT_NAME, lang, "en"); 143 if (display_name.equals("")) 144 { 145 display_name = sort.getAttribute(GSXML.NAME_ATT); 146 if (display_name.equals("")) 147 { 148 display_name = shortname; 149 } 150 } 151 sort_names.add(display_name); 152 153 } 154 155 } 101 156 protected void getSortByIndexData(ArrayList<String> index_ids, ArrayList<String> index_names, String lang) 102 157 {
Note:
See TracChangeset
for help on using the changeset viewer.