Changeset 30049 for main/trunk
- Timestamp:
- 2015-07-21T05:26:46+12:00 (9 years ago)
- Location:
- main/trunk/greenstone3
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/DocumentAction.java
r29922 r30049 871 871 Element query_param_list = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 872 872 GSXML.addParametersToList(query_param_list, service_params); 873 GSXML.addParameterToList(query_param_list, "hldocOID", (String) params.get(GSParams.DOCUMENT)); 873 874 mr_query_request.appendChild(query_param_list); 874 875 875 876 // do the query 876 877 Element mr_query_response = (Element) this.mr.process(mr_query_message); 878 879 String pathNode = GSPath.appendLink(GSXML.RESPONSE_ELEM, GSXML.NODE_CONTENT_ELEM); 880 Element highlighted_Node = (Element) GSXML.getNodeByPath(mr_query_response, pathNode); 881 if (highlighted_Node != null) 882 { 883 return highlighted_Node; 884 } 877 885 878 886 String path = GSPath.appendLink(GSXML.RESPONSE_ELEM, GSXML.TERM_ELEM + GSXML.LIST_MODIFIER); … … 1210 1218 content_element.appendChild(doc.createTextNode(remaining_text)); 1211 1219 } 1212 1213 1220 return content_element; 1214 1221 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/QueryAction.java
r29557 r30049 157 157 Element query_response = (Element) GSXML.getChildByTagName(mr_query_response, GSXML.RESPONSE_ELEM); 158 158 Element query_result_metadata_list = (Element) GSXML.getChildByTagName(query_response, GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER); 159 159 160 if (query_result_metadata_list == null) 160 161 { … … 260 261 Element mr_metadata_response = (Element) this.mr.process(mr_metadata_message); 261 262 263 Element query_result_snippet_list = (Element) GSXML.getChildByTagName(query_response, GSXML.HL_SNIPPET_ELEM + GSXML.LIST_MODIFIER); 264 262 265 // check for errors 263 266 processErrorElements(mr_metadata_response, page_response); … … 266 269 267 270 Element query_result_document_list = (Element) GSXML.getChildByTagName(metadata_response, GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 268 271 269 272 if (query_result_document_list != null) 270 273 { 271 274 page_response.appendChild(doc.importNode(query_result_document_list, true)); 272 } 273 275 page_response.appendChild(doc.importNode(query_result_snippet_list,true)); 276 } 277 274 278 //logger.debug("Query page:\n" + this.converter.getPrettyString(page_response)); 275 279 //append site metadata -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2FieldSearch.java
r29731 r30049 22 22 import java.util.ArrayList; 23 23 import java.util.HashMap; 24 import java.util.List; 25 import java.util.Map; 24 26 25 27 import org.apache.log4j.Logger; … … 27 29 import org.greenstone.gsdl3.util.GSXML; 28 30 import org.greenstone.gsdl3.util.XMLConverter; 29 30 31 import org.w3c.dom.Document; 31 32 import org.w3c.dom.Element; … … 92 93 protected boolean advanced_form_search = false; 93 94 protected boolean raw_search = false; 95 //Parameters to get full field with highlighted terms 96 protected String hldocOID = null; 97 //index Field for highlighting 98 protected String indexField = null; 94 99 95 100 static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.AbstractGS2FieldSearch.class.getName()); … … 591 596 protected Element processAnyQuery(Element request, int query_type) 592 597 { 598 593 599 String service_name = null; 594 600 String empty_query_test_param = null; … … 633 639 634 640 // Process the request parameters 641 635 642 HashMap<String, Serializable> params = GSXML.extractParams(param_list, false); 636 643 //Save as variable to make it accessable from GS2SolrSearch 644 hldocOID = (String) params.get("hldocOID"); 645 //System.out.println("@@@@@Extracted hldocOID is " + hldocOID); 637 646 // Make sure a query has been specified 638 647 String query = (String) params.get(empty_query_test_param); … … 644 653 // If a field hasn't been specified, use the default - for textQuery 645 654 String field = (String) params.get(INDEX_PARAM); 655 //Save as variable to make it accessable from GS2SolrSearch 656 646 657 if (field == null) 647 658 { 648 659 field = default_index; 649 660 } 650 661 indexField = field; 651 662 // set up the appropriate query system 652 663 if (!setUpQueryer(params)) … … 668 679 break; 669 680 } 670 681 671 682 // run the query 672 683 Object query_result = runQuery(query); 673 684 685 // We want highlighted text to be returned right now! 686 if (hldocOID != null && does_full_field_highlighting) 687 { 688 Element nodeContentElement = result_doc.createElement(GSXML.NODE_CONTENT_ELEM); 689 nodeContentElement.setTextContent((String) query_result); 690 result.appendChild(nodeContentElement); 691 return result; 692 } 693 694 674 695 // build up the response 675 696 … … 704 725 } 705 726 706 727 Map<String, Map<String, List<String>>> hlResults = null; 728 if (does_highlight_snippets) 729 { 730 hlResults = getHighlightSnippets(query_result); 731 } 732 707 733 // add a metadata item to specify what actual query was done - eg if stuff was stripped out etc. and then we can use the query later, cos we don't know which parameter was the query 708 734 GSXML.addMetadata(metadata_list, "query", query); … … 711 737 Element document_list = result_doc.createElement(GSXML.DOC_NODE_ELEM + GSXML.LIST_MODIFIER); 712 738 result.appendChild(document_list); 739 Element snippet_list = result_doc.createElement(GSXML.HL_SNIPPET_ELEM + GSXML.LIST_MODIFIER); 740 result.appendChild(snippet_list); 713 741 for (int d = 0; d < docs.length; d++) 714 742 { 715 743 String doc_id = internalNum2OID(docs[d]); 716 744 Element doc_node = createDocNode(result_doc, doc_id, doc_ranks[d]); 745 if (hlResults != null && hlResults.get(docs[d]) != null && hlResults.get(docs[d]).get(indexField) != null) { 746 for (String snippet : hlResults.get(docs[d]).get(indexField)){ 747 //remove html tags 748 snippet = snippet.replaceAll("\\<.*?>", ""); 749 //remove truncated tags 750 snippet = snippet.replaceAll(".*>", ""); 751 snippet = snippet.replaceAll("\\<.*", ""); 752 //remove unwanted symbols at start of line 753 snippet = snippet.replaceAll("^[ .,»):;-â]+", ""); 754 //highlighting tags transformation 755 snippet = snippet.replaceAll("<", "<"); 756 snippet = snippet.replaceAll(">", ">"); 757 Element snippet_node = result_doc.createElement(GSXML.HL_SNIPPET_ELEM); 758 snippet_node.setAttribute(GSXML.NODE_ID_ATT, doc_id); 759 snippet_node.setTextContent(snippet); 760 snippet_list.appendChild(snippet_node); 761 } 762 } 717 763 document_list.appendChild(doc_node); 718 764 } … … 756 802 } 757 803 804 758 805 return result; 759 806 … … 778 825 /** get the list of facets */ 779 826 abstract protected ArrayList<FacetWrapper> getFacets(Object query_result); 827 828 /** get the map of highlighting snippets */ 829 abstract protected Map<String, Map<String, List<String>>> getHighlightSnippets(Object query_result); 780 830 781 831 /** add in term info if available */ -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractSearch.java
r29558 r30049 66 66 /** does this service support faceting search results */ 67 67 protected boolean does_faceting = false; 68 /** does this service support highlighting snippets results */ 69 protected boolean does_highlight_snippets = false; 70 protected boolean does_full_field_highlighting = false; 68 71 /** 69 72 * the default document type - use if all documents are the same type -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2LuceneSearch.java
r29558 r30049 21 21 // Greenstone classes 22 22 import java.io.File; 23 import java.io.Serializable; 23 24 import java.util.ArrayList; 24 25 import java.util.HashMap; 25 26 import java.util.Iterator; 27 import java.util.List; 26 28 import java.util.Map; 27 29 import java.util.Set; … … 35 37 import org.greenstone.gsdl3.util.GSXML; 36 38 import org.greenstone.gsdl3.util.XMLConverter; 37 38 39 import org.w3c.dom.Document; 39 40 import org.w3c.dom.Element; … … 307 308 return gs3_sort; 308 309 } 310 311 @Override 312 protected Map<String, Map<String, List<String>>> getHighlightSnippets( 313 Object query_result) { 314 // TODO Auto-generated method stub 315 return null; 309 316 } 317 318 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java
r29558 r30049 24 24 import java.util.HashMap; 25 25 import java.util.Iterator; 26 import java.util.List; 26 27 import java.util.Map; 27 28 import java.util.Set; … … 33 34 import org.greenstone.gsdl3.util.GSXML; 34 35 import org.greenstone.gsdl3.util.XMLConverter; 35 36 36 import org.greenstone.mgpp.MGPPDocInfo; 37 37 import org.greenstone.mgpp.MGPPQueryResult; 38 38 import org.greenstone.mgpp.MGPPSearchWrapper; 39 39 import org.greenstone.mgpp.MGPPTermInfo; 40 41 40 import org.w3c.dom.Document; 42 41 import org.w3c.dom.Element; … … 358 357 return null; 359 358 } 359 360 @Override 361 protected Map<String, Map<String, List<String>>> getHighlightSnippets( 362 Object query_result) { 363 // TODO Auto-generated method stub 364 return null; 365 } 360 366 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSXML.java
r29522 r30049 168 168 public static final String NODE_ID_ATT = "nodeID"; 169 169 public static final String HREF_ID_ATT = "hrefId"; // for ids that need translating 170 public static final String HL_SNIPPET_ELEM = "highlightSnippet"; 170 171 public static final String ID_MOD_ATT = "idMod"; // might hold .rt etc for hrefIds 171 172 public static final String NODE_OID = "oid"; -
main/trunk/greenstone3/web/interfaces/default/style/core.css
r29978 r30049 147 147 #searchResultsStatusBar { 148 148 text-align:center; 149 } 150 151 .HighlightSnippet { 152 font-size:0.7em; 149 153 } 150 154 … … 208 212 background:yellow; 209 213 } 214 .snippetText{ 215 font-weight:bold; 216 font-style:italic; 217 } 218 210 219 211 220 #viewAndZoomOptions { -
main/trunk/greenstone3/web/interfaces/default/transform/pages/query.xsl
r29553 r30049 136 136 <xsl:call-template name="documentBerryForClassifierOrSearchPage"/> 137 137 </td> 138 138 <xsl:call-template name="highlightSnippet"> 139 <xsl:with-param name="nodeHASH"> 140 <xsl:value-of select="@nodeID"/> 141 </xsl:with-param> 142 </xsl:call-template> 139 143 <xsl:call-template name="documentNodePost"/> 140 144 </tr> … … 153 157 </xsl:template> 154 158 159 <xsl:template name="highlightSnippet"> 160 <xsl:param name="nodeHASH"> 161 </xsl:param> 162 <xsl:for-each select="/page/pageResponse/highlightSnippetList/highlightSnippet[@nodeID = $nodeHASH]"> 163 <tr> 164 <td> 165 </td> 166 <td> 167 <div class="HighlightSnippet"> 168 <xsl:value-of select="." disable-output-escaping="yes"/> 169 </div> 170 </td> 171 </tr> 172 </xsl:for-each> 173 </xsl:template> 155 174 <xsl:template name="queryPage"> 156 175 <xsl:for-each select="pageResponse/service">
Note:
See TracChangeset
for help on using the changeset viewer.