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++;
}