knguyen 2005/04/08 14:52:20 CEST
Modified files:
core/src/java/org/jahia/services/search
CacheableDocumentProxy.java
ContainerSearcher.java
JahiaFieldIndexableDocument.java
PageSearchResultBuilderImpl.java
Log:
- fix pdf and charset parsing
- lowering page title boost score ( can be customized ) for better display of
search result
Revision Changes Path
1.2 +1 -1
jahia/core/src/java/org/jahia/services/search/CacheableDocumentProxy.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/CacheableDocumentProxy.java.diff?r1=1.1&r2=1.2&f=h
1.5 +1 -1
jahia/core/src/java/org/jahia/services/search/ContainerSearcher.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/ContainerSearcher.java.diff?r1=1.4&r2=1.5&f=h
1.2 +4 -1
jahia/core/src/java/org/jahia/services/search/JahiaFieldIndexableDocument.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/JahiaFieldIndexableDocument.java.diff?r1=1.1&r2=1.2&f=h
1.3 +68 -11
jahia/core/src/java/org/jahia/services/search/PageSearchResultBuilderImpl.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/PageSearchResultBuilderImpl.java.diff?r1=1.2&r2=1.3&f=h
Index: CacheableDocumentProxy.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/CacheableDocumentProxy.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CacheableDocumentProxy.java 28 Feb 2005 16:10:19 -0000 1.1
+++ CacheableDocumentProxy.java 8 Apr 2005 12:52:19 -0000 1.2
@@ -39,7 +39,7 @@
public Object invoke(Object proxy, Method m, Object[] args)
throws Throwable
{
- Object result;
+ Object result;
try {
result = m.invoke(obj, args);
} catch (InvocationTargetException e) {
Index: ContainerSearcher.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/ContainerSearcher.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ContainerSearcher.java 3 Mar 2005 12:27:00 -0000 1.4
+++ ContainerSearcher.java 8 Apr 2005 12:52:19 -0000 1.5
@@ -145,7 +145,7 @@
* @param siteId
* @param containerDefinitionName
* @param query
- * @param loadRequest
+ * @param loadRequest
*/
public ContainerSearcher (int siteId, String containerDefinitionName,
String query, EntryLoadRequest loadRequest) {
Index: JahiaFieldIndexableDocument.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/JahiaFieldIndexableDocument.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JahiaFieldIndexableDocument.java 28 Feb 2005 16:10:19 -0000 1.1
+++ JahiaFieldIndexableDocument.java 8 Apr 2005 12:52:19 -0000 1.2
@@ -30,6 +30,7 @@
import org.jahia.bin.JahiaAdministration;
import org.jahia.params.ParamBean;
import org.jahia.params.SerializableParamBean;
+import org.apache.lucene.document.DateField;
/**
*
@@ -256,7 +257,7 @@
}
extDoc =
ServicesRegistry.getInstance().getFileExtractionService()
.getExtractedDocument(contentType,file.getPath(),lastModifiedDate,
- true,file.downloadFile());
+
true,file.downloadFile(),charSet);
if ( extDoc != null ){
strVal = extDoc.getContentAsString();
}
@@ -264,8 +265,10 @@
logger.debug(t);
}
}
+ strVal += " " + file.getName();
}
}
+
if (strVal != null) {
this.setFieldValue(JahiaSearchConstant.FIELD_VALUE,strVal);
this.getField(JahiaSearchConstant.FIELD_VALUE).setType(DocumentField.UNSTORED_TEXT);
Index: PageSearchResultBuilderImpl.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/PageSearchResultBuilderImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PageSearchResultBuilderImpl.java 3 Mar 2005 12:27:00 -0000 1.2
+++ PageSearchResultBuilderImpl.java 8 Apr 2005 12:52:19 -0000 1.3
@@ -50,10 +50,18 @@
private boolean oneHitByPage = false;
+ private float directLinkBootFactor = 0.1f;
+ private float directPageBootFactor = 0.3f;
+ private float externalLinkBootFactor = 0.3f;
+
private GroupingHitsHandler groupingHitsHandler = new
GroupingHitsHandler();
public PageSearchResultBuilderImpl(){}
+ public PageSearchResultBuilderImpl(boolean oneHitByPage){
+ this.oneHitByPage = oneHitByPage;
+ }
+
public boolean getOneHitByPage() {
return oneHitByPage;
}
@@ -62,8 +70,28 @@
this.oneHitByPage = oneHitByPage;
}
- public PageSearchResultBuilderImpl(boolean oneHitByPage){
- this.oneHitByPage = oneHitByPage;
+ public float getDirectLinkBootFactor() {
+ return directLinkBootFactor;
+ }
+
+ public void setDirectLinkBootFactor(float directLinkBootFactor) {
+ this.directLinkBootFactor = directLinkBootFactor;
+ }
+
+ public float getDirectPageBootFactor() {
+ return directPageBootFactor;
+ }
+
+ public void setDirectPageBootFactor(float directPageBootFactor) {
+ this.directPageBootFactor = directPageBootFactor;
+ }
+
+ public float getExternalLinkBootFactor() {
+ return externalLinkBootFactor;
+ }
+
+ public void setExternalLinkBootFactor(float externalLinkBootFactor) {
+ this.externalLinkBootFactor = externalLinkBootFactor;
}
/**
@@ -130,9 +158,29 @@
}
}
}
-
- 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 ());
@@ -201,9 +249,11 @@
}
}
info.setId(String.valueOf(contentField.getID()));
- info.setPageId(contentField.getPageID());
+ info.setPageId(aPage.getID());
info.setPage(aPage);
+ float scoreFactor = 1.0f;
+
aField = sReg.getJahiaFieldService
().loadField (
Integer.parseInt
(fieldIDVal), jParams);
@@ -215,10 +265,15 @@
if (fieldPage != null) {
value = fieldPage.getTitle ();
try {
- if (fieldPage.getPageType ()
== JahiaPage.TYPE_DIRECT) {
- url = fieldPage.getURL
(jParams);
- } else if
(fieldPage.getPageType () == JahiaPage.TYPE_URL) {
+ if (fieldPage.getPageType ()
== JahiaPage.TYPE_URL) {
+ scoreFactor =
this.getExternalLinkBootFactor();
url =
fieldPage.getRemoteURL();
+ } else if
(fieldPage.getPageType () == JahiaPage.TYPE_DIRECT) {
+ scoreFactor =
this.getDirectPageBootFactor();
+ url =
fieldPage.getURL(jParams);
+ } else {
+ scoreFactor =
this.getDirectLinkBootFactor();
+ url =
aPage.getURL(jParams);
}
} catch ( Throwable t ){
}
@@ -272,7 +327,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++;
}
@@ -298,7 +353,9 @@
score = (Float) iterator.next();
f += score.floatValue();
}
- searchHit.setScore((new Float((f * 100) /
hitScoreList.size())).intValue());
+ searchHit.setScore((new Float(((f * 100)) /
hitScoreList.size())).intValue());
+ //f += hitScoreList.size() * 1;
+ //searchHit.setScore((new Float(((f * 100)) /
(hitScoreList.size() * 2))).intValue());
}
}
}