[prev in list] [next in list] [prev in thread] [next in thread]
List: slide-dev
Subject: DO NOT REPLY [Bug 35539] New: -
From: bugzilla () apache ! org
Date: 2005-06-29 11:13:10
Message-ID: 20050629111310.127D813 () ajax ! apache ! org
[Download RAW message or body]
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=35539>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=35539
Summary: New feature - version-aware Lucene searching
Product: Slide
Version: Nightly
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: Search
AssignedTo: slide-dev@jakarta.apache.org
ReportedBy: tomekem@poczta.fm
For now Slide doesn't perform version-aware Lucene searching. It indexes text
for all file revisions, searches all revisions but only one revision is returned
in query result. It is due to use of Set and ComparableResourceImpl classes.
ComparableResourceImpl uses only URL to compare objects but Set objects must be
unique and query result is constrained.
I added revision support to ComparableResource class. With my patch it stores
revision number for resources and revision number is significiant for comparing
issues. Query result contains set of ComparableResourceImpl objects with
revision information.
Tomek Majchrzak
--- src/share/org/apache/slide/search/RequestedResource.java 2005-06-24
12:33:58.000000000 +0200
+++ src/share/org/apache/slide/search/RequestedResource.java?rev=1.10
2005-06-29 10:00:18.465256424 +0200
@@ -28,7 +28,6 @@
import org.apache.slide.common.PropertyName;
import org.apache.slide.content.NodeProperty;
-import org.apache.slide.content.NodeRevisionNumber;
import java.util.Iterator;
@@ -48,14 +47,7 @@
* @throws SlideException
*/
public String getUri() throws SlideException;
-
- /**
- * Returns the revision number of the resource.
- *
- * @return the revision number of resource
- */
- public NodeRevisionNumber getRevisionNumber();
-
+
/**
* Returns the property with the given <code>name</code> and
* <code>namespace</code>.
share/org/apache/slide/search/basic/ComparableResourceImpl.java
---
src/share/org/apache/slide/search/basic/ComparableResourceImpl.java?rev=1.17
2005-06-24 13:02:32.000000000 +0200
+++ src/share/org/apache/slide/search/basic/ComparableResourceImpl.java
2005-06-29 11:31:28.000000000 +0200
@@ -39,6 +39,7 @@
import org.apache.slide.content.NodeRevisionContent;
import org.apache.slide.content.NodeRevisionDescriptor;
import org.apache.slide.content.NodeRevisionDescriptors;
+import org.apache.slide.content.NodeRevisionNumber;
import org.apache.slide.search.CompareHint;
import org.apache.slide.search.PropertyProvider;
import org.apache.slide.search.QueryScope;
@@ -114,13 +115,31 @@
public ComparableResourceImpl (ObjectNode objectNode, SearchToken
searchToken, QueryScope scope, PropertyProvider propertyProvider)
throws SlideException
{
- this (objectNode, searchToken.getSlideToken(),
searchToken.getContentHelper(), scope, propertyProvider);
- this.searchToken = searchToken;
+ this (objectNode, searchToken, scope, propertyProvider, null);
}
+ /**
+ * Constructs a RequestedResource.
+ *
+ * @param objectNode the ObjectNode for this resource
+ * @param searchToken the SearchToken for this request
+ * @param scope the scope of the query.
+ * @param propertyProvider the PropertyProvider to use (may be
+ * <code>null</code>).
+ * @param revisionNumber the revision number of this resource
+ *
+ * @throws BadQueryException
+ */
+ public ComparableResourceImpl (ObjectNode objectNode, SearchToken searchToken,
QueryScope scope, PropertyProvider propertyProvider, NodeRevisionNumber
revisionNumber)
+ throws SlideException
+ {
+ this (objectNode, searchToken.getSlideToken(),
searchToken.getContentHelper(), scope, propertyProvider, revisionNumber);
+ this.searchToken = searchToken;
+ }
+
// private boolean isCollection;
-
+
/**
* Constructs a RequestedResource.
*
@@ -130,10 +149,11 @@
* @param scope the scope of the query.
* @param propertyProvider the PropertyProvider to use (may be
* <code>null</code>).
+ * @param revisionNumber the revision number of this resource
*
* @throws BadQueryException
*/
- public ComparableResourceImpl (ObjectNode objectNode, SlideToken
slideToken, Content contentHelper, QueryScope scope, PropertyProvider
propertyProvider) throws SlideException {
+ public ComparableResourceImpl (ObjectNode objectNode, SlideToken
slideToken, Content contentHelper, QueryScope scope, PropertyProvider
propertyProvider, NodeRevisionNumber revisionNumber) throws SlideException {
this.objectNode = objectNode;
this.contentHelper = contentHelper;
@@ -146,9 +166,12 @@
contentHelper.retrieve (slideToken, objectNode.getUri());
try {
- revisionDescriptor =
- contentHelper.retrieve (slideToken, revisionDescriptors);
-
+ if (revisionNumber == null)
+ revisionDescriptor =
+ contentHelper.retrieve (slideToken, revisionDescriptors);
+ else
+ revisionDescriptor =
+ contentHelper.retrieve (slideToken, revisionDescriptors, revisionNumber);
}
catch (org.apache.slide.content.RevisionDescriptorNotFoundException
e) {
// The object doesn't have any revision, we create a dummy
@@ -310,6 +333,15 @@
public String getUri() {
return getInternalHref();
}
+
+ /**
+ * Returns the revision number of the resource.
+ *
+ * @return the revision number of the resource.
+ */
+ public NodeRevisionNumber getRevisionNumber() {
+ return revisionDescriptor.getRevisionNumber();
+ }
/**
* Returns the property with the given <code>propertyName</code>.
@@ -452,8 +484,9 @@
Comparable otherValue = (Comparable) otherResource.getThisValue
(hint.getPropName(), hint.getPropNamespace());
Comparable thisValue = (Comparable) getThisValue (hint.getPropName(),
hint.getPropNamespace());
- if (getInternalHref().equals (otherResource.getInternalHref()))
- result = 0;
+ if (getInternalHref().equals (otherResource.getInternalHref()) &&
+
(getRevisionNumber().equals(((ComparableResource)otherResource).getRevisionNumber())))
+ result = 0;
else if (thisValue != null && otherValue != null) {
result = thisValue.compareTo(otherValue);
@@ -653,7 +686,7 @@
} catch (SlideException e) {}
if (getUri().equals (otherUri))
- return true;
+ return
getRevisionNumber().equals(((ComparableResource)otherObject).getRevisionNumber());
else
return false;
}
--- src/share/org/apache/slide/search/basic/OrderBy.java?rev=1.11
2005-06-28 08:45:46.000000000 +0200
+++ src/share/org/apache/slide/search/basic/OrderBy.java 2005-06-23
13:45:08.000000000 +0200
@@ -203,7 +203,8 @@
ComparableResource r2 = (ComparableResource)o2;
int result = 0;
- if (r1.getInternalHref().equals (r2.getInternalHref())) {
+ if (r1.getInternalHref().equals (r2.getInternalHref()) &&
+
r1.getRevisionNumber().equals(r2.getRevisionNumber())) {
result = 0;
}
else {
--- src/stores/org/apache/slide/index/lucene/Index.java?rev=1.12 2005-06-28
08:49:28.000000000 +0200
+++ src/stores/org/apache/slide/index/lucene/Index.java 2005-06-23
12:45:34.000000000 +0200
@@ -65,6 +65,7 @@
{
public static final String KEY_FIELD_NAME = "SLIDE_KEY";
public static final String URI_FIELD_NAME = "SLIDE_URI";
+ public static final String REVISION_FIELD_NAME = "SLIDE_REVISION";
public static final String SCOPE_FIELD_NAME = "SLIDE_SCOPE";
public static final String DEPTH_FIELD_NAME = "SLIDE_DEPTH";
public static final String VERSION_FIELD_NAME = "SLIDE_VERSION";
@@ -221,6 +222,7 @@
doc.add(unstoredString(Index.KEY_FIELD_NAME,
configuration.generateKey(uri, descriptor.getRevisionNumber())));
doc.add(storedString(Index.URI_FIELD_NAME, uri));
+ doc.add(storedString(Index.REVISION_FIELD_NAME,
descriptor.getRevisionNumber().toString()));
// scopes
StringTokenizer tokenizer = new StringTokenizer(uri, "/");
@@ -305,6 +307,7 @@
doc.add(unstoredString(Index.KEY_FIELD_NAME,
configuration.generateKey(uri, descriptor.getRevisionNumber())));
doc.add(storedString(Index.URI_FIELD_NAME, uri));
+ doc.add(storedString(Index.REVISION_FIELD_NAME,
descriptor.getRevisionNumber().toString()));
// scopes
StringTokenizer tokenizer = new StringTokenizer(uri, "/");
---
src/stores/org/apache/slide/index/lucene/expressions/AbstractLuceneExpression.java?rev=1.2
2005-06-28 08:51:24.000000000 +0200
+++
src/stores/org/apache/slide/index/lucene/expressions/AbstractLuceneExpression.java
2005-06-23 12:46:30.000000000 +0200
@@ -53,6 +53,7 @@
import org.apache.slide.structure.ObjectNode;
import org.apache.slide.structure.SubjectNode;
import org.apache.slide.util.logger.Logger;
+import org.apache.slide.content.NodeRevisionNumber;
import org.jdom.Element;
@@ -156,7 +157,9 @@
for (int i = 0, l = hits.length(); i < l; i++) {
Document doc = hits.doc(i);
String uri = doc.get(Index.URI_FIELD_NAME);
- RequestedResource resource = createResource(uri);
+ String number =
doc.get(Index.REVISION_FIELD_NAME);
+ NodeRevisionNumber nodeNumber = new
NodeRevisionNumber(number);
+ RequestedResource resource = createResource(uri, nodeNumber);
result.add(resource);
}
@@ -199,7 +202,7 @@
return new TermQuery(new Term(Index.SCOPE_FIELD_NAME, "/"));
}
- protected RequestedResource createResource(String uri) throws SearchException
+ protected RequestedResource createResource(String uri, NodeRevisionNumber
nodeNumber) throws SearchException
{
ObjectNode node = new SubjectNode(uri); // this will return the root
// folder
@@ -208,7 +211,7 @@
try {
resource = new ComparableResourceImpl(node, query.getSearchToken(),
- query.getScope(), factory.getPropertyProvider());
+ query.getScope(), factory.getPropertyProvider(), nodeNumber);
} catch (SlideException e) {
throw new SearchException(e);
}
---
src/webdav/server/org/apache/slide/webdav/util/ResourceWithProvidedProperties.java?rev=1.8
2005-06-29 12:29:31.706156920 +0200
+++
src/webdav/server/org/apache/slide/webdav/util/ResourceWithProvidedProperties.java
2005-06-24 12:42:49.000000000 +0200
@@ -33,6 +33,7 @@
import org.apache.slide.content.NodeProperty;
import org.apache.slide.content.NodeRevisionDescriptor;
import org.apache.slide.content.NodeRevisionDescriptors;
+import org.apache.slide.content.NodeRevisionNumber;
import org.apache.slide.search.PropertyProvider;
import org.apache.slide.search.RequestedResource;
@@ -89,7 +90,16 @@
public String getUri() {
return revisionDescriptors.getOriginalUri();
}
-
+
+ /**
+ * Returns the revision number of the resource.
+ *
+ * @return the revision number of the resource.
+ */
+ public NodeRevisionNumber getRevisionNumber() {
+ return revisionDescriptor.getRevisionNumber();
+ }
+
/**
* Returns the property with the given <code>propertyName</code>.
*
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic