Erik,

I got a bit out of sync with the CVS build (because it took a while to
integrate the changes), so I can't quickly do a simple diff.  Instead, I'm
including the changed methods in HitsIterator in this message verbatim. Not
real pretty code, I know, but it does work just fine.

Regards and HTH,

Terry

Note: direction can be 'r', 'a' or 'd' (default)
public HitsIterator(Hits hits, String sortField, String direction) throws
IOException{
        this.hitsCollection = hits;
        if (sortField != null){
            if ((direction != null) && (!direction.equals("r"))){
                sortByField(sortField, direction);
            }
        }
        totalHits = getTotalHits();
        setPageCount();
 }


 private void sortByField(String fieldName, String direction) throws
IOException{
        long start = System.currentTimeMillis();
        Comparator c = null;
        if (fieldName == null){
            return;
        }
        SortedField sf = SortedField.getSortedField(fieldName);
  int dirflag = -1;
  if(direction.equals("a")) {
   dirflag = 1;
  } else if(direction.equals("r")) {
   dirflag = 0;
  }
        if (sf !=null){
            c = (Comparator) new CompareDocumentsByField(dirflag);
        } else {
            arrayOfIndividualHits = null;
            return;
        }
  int i = 0;
  int id = 0;
  String fv = null;
  try{
         arrayOfIndividualHits = new Object[hitsCollection.length()];
         long first = System.currentTimeMillis();
         for (i=0; i<hitsCollection.length(); i++) {
             id = hitsCollection.id(i);
    try {
     fv = sf.getFieldValue(id);
    } catch (Exception e) {
     fv = null;
    }
    if(fv != null && fv.length() > 0) {
              arrayOfIndividualHits[i] = new IndividualHit(i, fv,
hitsCollection.score(i));
     fv = null;
    }
         }
  } catch (Exception e) {
   msg("Error ["+fv+"]:"+e);
  }
        long second = System.currentTimeMillis();

        Arrays.sort(arrayOfIndividualHits, c);
   }





----- Original Message -----
From: "Erik Hatcher" <[EMAIL PROTECTED]>
To: "Lucene Users List" <[EMAIL PROTECTED]>
Sent: Monday, January 20, 2003 8:48 AM
Subject: Re: SearchBean in action?


> On Sunday, January 19, 2003, at 11:17  PM, Terry Steichen wrote:
> > I've recently made some specific additional changes (regarding
> > scoring, as I
> > recall).  At this point I don't recall which of these have been
> > included in
> > the distribution and which have not.
>
> I'm using the latest CVS HEAD version of the searchbean codebase, just
> for comparisons sake.
>
> > However, since then I've been using SearchBean extensively and, my
> > version
> > at least, works fine for sorting in either ascending or descending
> > date (or
> > relevance) order on whatever field I choose.
>
> How are you switching between ascending and descending sort?
>
> In HitsIterator, its hardcoded to a particular field.  Why?  I've
> removed this restriction and here is the diff:
>
>       public HitsIterator(Hits hits, String sortFlag) throws IOException{
>           this.hitsCollection = hits;
>           if (sortFlag != null){
> -            if ((sortFlag != "") &&
> (sortFlag.equals(SearchBean.SORT_FIELD_RELEVANCE))){
> -                file://logger.debug("Sorting hits by field "+sortFlag);
> +            if (sortFlag != "") {
> +                System.out.println("Sorting hits by field "+sortFlag);
>                   sortByField(sortFlag);
>                   file://logger.debug("Completed sorting by field
"+sortFlag);
>               }
>
>
>
> > Please let me know what kind of problems you're having and I'll see if
> > I can
> > help.
>
> SearchBean itself is hardcoded to the StandardAnalyzer.  To be
> generally useful this needs to be made configurable.
>
> Those were the main issues I've had.  I'm assuming you've made changes
> in your version of SearchBean to account for at least the field name to
> sort on, or you're always using "relevance" :)
>
> Erik
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to