knguyen     2005/04/08 15:08:42 CEST

  Modified files:        (Branch: JAHIA-4-0-BRANCH)
    src/java/org/jahia/services/search AddedField.java 
                                       JahiaSearchResultHandlerImpl.java 
  Log:
  - lowering page title boost score ( can be customized ) for better display of 
search result
  - appending file name to file content when indexing
  
  Revision   Changes    Path
  1.14.2.10  +15 -0     jahia/src/java/org/jahia/services/search/AddedField.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/services/search/AddedField.java.diff?r1=1.14.2.9&r2=1.14.2.10&f=h
  1.2.2.8    +40 -13    
jahia/src/java/org/jahia/services/search/JahiaSearchResultHandlerImpl.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/services/search/JahiaSearchResultHandlerImpl.java.diff?r1=1.2.2.7&r2=1.2.2.8&f=h
  
  
  
  Index: AddedField.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/src/java/org/jahia/services/search/Attic/AddedField.java,v
  retrieving revision 1.14.2.9
  retrieving revision 1.14.2.10
  diff -u -r1.14.2.9 -r1.14.2.10
  --- AddedField.java   7 Apr 2005 09:44:06 -0000       1.14.2.9
  +++ AddedField.java   8 Apr 2005 13:08:42 -0000       1.14.2.10
  @@ -14,6 +14,7 @@
   import org.jahia.services.webdav.*;
   import org.jahia.utils.fileparsers.*;
   import org.jahia.utils.JahiaTools;
  +import org.apache.lucene.document.DateField;
   
   /**
    * <p>Title: This class represents a field wrapper used by search engine</p>
  @@ -163,6 +164,19 @@
           }
   
           String[] values = null;
  +        /*
  +        if (this.getType () == FieldTypes.DATE) {
  +            Object[] objs = this.getValues ();
  +            Object val = objs[0];
  +            try {
  +                val = DateField.timeToString(Long.parseLong(val.toString()));
  +                objs[0] = val;
  +            } catch ( Throwable t) {
  +            }
  +            List list = Arrays.asList (objs);
  +            values = new String[0];
  +            values = (String[]) list.toArray (values);
  +        */
           if (this.getType () != FieldTypes.FILE) {
               Object[] objs = this.getValues ();
               List list = Arrays.asList (objs);
  @@ -261,6 +275,7 @@
                                       } catch ( Throwable t ){
                                           logger.debug(t);
                                       }
  +                                    strVal += " " + file.getName();
                                   }
                               }
                           }
  
  
  
  Index: JahiaSearchResultHandlerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/src/java/org/jahia/services/search/Attic/JahiaSearchResultHandlerImpl.java,v
  retrieving revision 1.2.2.7
  retrieving revision 1.2.2.8
  diff -u -r1.2.2.7 -r1.2.2.8
  --- JahiaSearchResultHandlerImpl.java 7 Jan 2005 17:35:38 -0000       1.2.2.7
  +++ JahiaSearchResultHandlerImpl.java 8 Apr 2005 13:08:42 -0000       1.2.2.8
  @@ -120,8 +120,30 @@
                      contentField = ContentField.getField (Integer.parseInt 
(fieldIDVal));
                      if 
(processField(contentField,ws,languageCodeVal,jParams)) {
                          pageIDVal = 
parsedObject.getValue(JahiaSearchConstant.FIELD_PAGEID);
  -                       aPage = sReg.getJahiaPageService ()
  -                               .lookupPage (Integer.parseInt (pageIDVal), 
jParams);
  +
  +                       aPage = null;
  +                       int pageId = 0;
  +                       try {
  +                           pageId = Integer.parseInt (pageIDVal);
  +                           if ( contentField.getType() != FieldTypes.PAGE ) {
  +                                // use the parent page of the field
  +                                aPage = sReg.getJahiaPageService ()
  +                                    .lookupPage (pageId, jParams);
  +                           } else {
  +                               pageId = Integer.parseInt 
(contentField.getValue(jParams));
  +                               // use the target page of the field
  +                               aPage = sReg.getJahiaPageService ()
  +                                   .lookupPage (pageId,jParams);
  +                               if ( aPage.getPageType() != 
JahiaPage.TYPE_DIRECT ) {
  +                                   // its an url, use the parent page to 
display the link
  +                                   pageId = Integer.parseInt (pageIDVal);
  +                                   aPage = sReg.getJahiaPageService ()
  +                                       .lookupPage (pageId, jParams);
  +                               }
  +                           }
  +                       } catch ( Throwable t) {
  +                           logger.debug("Page not found pageId=" + pageId);
  +                       }
   
                          // security check over the field and the 
corresponding page
                          JahiaBaseACL acl = new JahiaBaseACL 
(contentField.getAclID ());
  @@ -154,16 +176,10 @@
                                              searchHit.wordcount += 1;
   
                                              List hitScoreList = 
(List)hitScores.get(new Integer(j+1));
  -                                           int hitScore = 0;
                                              if ( hitScoreList == null ){
                                                        hitScoreList = new 
ArrayList();
                                              }
                                              hitScoreList.add(new 
Float(parsedObject.getScore()));
  -
  -                                           /*
  -                                           (searchHit.
  -                                               wordcount + new 
Float(parsedObject.getScore() *
  -                                               100).intValue()) / 2;*/
                                          }
                                      }
                                      break;
  @@ -196,6 +212,9 @@
                                  
//-----------------------------------------------------------
   
                                  info.pageID = aPage.getID ();
  +
  +                               float scoreFactor = 1.0f;
  +
                                  aField =
                                          sReg.getJahiaFieldService 
().loadField (
                                                  Integer.parseInt 
(fieldIDVal), jParams);
  @@ -207,10 +226,18 @@
                                          JahiaPage fieldPage = (JahiaPage) 
aField.getObject ();
                                          if (fieldPage != null) {
                                              value = fieldPage.getTitle ();
  -                                           if (fieldPage.getPageType () == 
JahiaPage.TYPE_DIRECT) {
  -                                               info.pageUrl = 
fieldPage.getURL (jParams);
  -                                           } else if (fieldPage.getPageType 
() == JahiaPage.TYPE_URL) {
  -                                               info.pageUrl = 
fieldPage.getRemoteURL ();
  +                                           try {
  +                                               if (fieldPage.getPageType () 
== JahiaPage.TYPE_URL) {
  +                                                   scoreFactor = 0.3f;
  +                                                   info.pageUrl = 
fieldPage.getRemoteURL();
  +                                               } else if 
(fieldPage.getPageType () == JahiaPage.TYPE_DIRECT) {
  +                                                   scoreFactor = 0.3f;
  +                                                    info.pageUrl = 
fieldPage.getURL(jParams);
  +                                               } else {
  +                                                   scoreFactor = 0.1f;
  +                                                   info.pageUrl = 
aPage.getURL(jParams);
  +                                               }
  +                                           } catch ( Throwable t ){
                                              }
                                          }
                                      } else if (aField.getType () != 
FieldTypes.FILE) {
  @@ -247,7 +274,7 @@
                                  }
                                  result.addHit (info);
                                  List hitScoreList = new ArrayList();
  -                               hitScoreList.add(new 
Float(parsedObject.getScore()));
  +                               hitScoreList.add(new 
Float(parsedObject.getScore() * scoreFactor));
                                  hitScores.put(new 
Integer(result.getHitCount()),hitScoreList);
                                  pagecount++;
                              }
  

Reply via email to