Changeset 28029


Ignore:
Timestamp:
2013-08-13T13:27:27+12:00 (11 years ago)
Author:
kjdon
Message:

moved some stuff back to super class. setting reverse_sort is different for whether sorting is by rank/field

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2LuceneSearch.java

    r27085 r28029  
    3838public class GS2LuceneSearch extends SharedSoleneGS2FieldSearch
    3939{
    40 
    41   protected static final String SORT_ORDER_PARAM = "sortOrder";
    42   protected static final String SORT_ORDER_DESCENDING = "1";
    43   protected static final String SORT_ORDER_ASCENDING = "0";
    44 
    4540    static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.GS2LuceneSearch.class.getName());
    4641
     
    5853    }
    5954
    60     /** add in the Lucene specific params to TextQuery */
    61     protected void addCustomQueryParams(Element param_list, String lang)
    62     {
    63         super.addCustomQueryParams(param_list, lang);
    64         /** Lucene's/Solr's rank param is based on index fields, not ranked/not */
    65         createParameter(SORT_ORDER_PARAM, param_list, lang);
    66     }
    67  
    68   /** create a param and add to the list */
    69   protected void createParameter(String name, Element param_list, String lang)
    70     {
    71       Element param = null;
    72       if (name.equals(SORT_ORDER_PARAM)) {
    73         String[] vals = { SORT_ORDER_ASCENDING, SORT_ORDER_DESCENDING };
    74         String[] vals_texts = { getTextString("param." + SORT_ORDER_PARAM + "." + SORT_ORDER_ASCENDING, lang), getTextString("param." + SORT_ORDER_PARAM + "." + SORT_ORDER_DESCENDING, lang) };
    75 
    76         param = GSXML.createParameterDescription(this.doc, SORT_ORDER_PARAM, getTextString("param." + SORT_ORDER_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, SORT_ORDER_ASCENDING, vals, vals_texts);
    77       }
    78      
    79       if (param != null)
    80         {
    81           param_list.appendChild(param);
    82         }
    83       else
    84         {
    85           super.createParameter(name, param_list, lang);
    86         }
    87     }
    8855    /** methods to handle actually doing the query */
    8956
     
    9966        int hits_per_page = 20;
    10067        int start_page = 1;
     68        String sort_field = GS2LuceneQuery.SORT_RANK;
     69        String sort_order = SORT_ORDER_ASCENDING;
    10170        // set up the query params
    10271        Set entries = params.entrySet();
     
    134103            else if (name.equals(RANK_PARAM))
    135104            {
    136                 if (value.equals(RANK_PARAM_RANK_VALUE))
    137                 {
    138                     value = null;
     105                if (value.equals(RANK_PARAM_RANK))
     106                {
     107                    value = GS2LuceneQuery.SORT_RANK;
     108                } else if (value.equals(RANK_PARAM_NONE)) {
     109                  value = GS2LuceneQuery.SORT_NATURAL;
    139110                }
    140111                this.lucene_src.setSortField(value);
     112                sort_field = value;
    141113            }
    142114            else if (name.equals(SORT_ORDER_PARAM)) {
    143                 if (value.equals(SORT_ORDER_DESCENDING)) {
    144                   this.lucene_src.setReverseSort();
    145                 }
    146               }
     115              sort_order = value;
     116            }
    147117            else if (name.equals(LEVEL_PARAM))
    148118            {
     
    187157        }
    188158
     159        // default order for rank is descending, while for other
     160        // fields it is ascending. So reverse_sort is different for
     161        // the two cases.
     162        if (sort_field.equals(GS2LuceneQuery.SORT_RANK)) {
     163          if (sort_order.equals(SORT_ORDER_ASCENDING)) {
     164            this.lucene_src.setReverseSort(true);
     165          } else {
     166            this.lucene_src.setReverseSort(false);
     167          }
     168        } else {
     169          if (sort_order.equals(SORT_ORDER_DESCENDING)) {
     170            this.lucene_src.setReverseSort(true);
     171          } else {
     172            this.lucene_src.setReverseSort(false);
     173          }
     174        }
    189175        this.lucene_src.setIndexDir(indexdir + index);
    190176        this.lucene_src.initialise();
Note: See TracChangeset for help on using the changeset viewer.