You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2011/01/18 19:36:54 UTC
svn commit: r1060523 - in
/incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src:
main/scala/org/apache/clerezza/rdf/cris/IndexService.scala
test/scala/org/apache/clerezza/rdf/cris/IndexServiceTest.scala
Author: reto
Date: Tue Jan 18 18:36:53 2011
New Revision: 1060523
URL: http://svn.apache.org/viewvc?rev=1060523&view=rev
Log:
CLEREZZA-388: added support for removal of statements
Modified:
incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexService.scala
incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/IndexServiceTest.scala
Modified: incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexService.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexService.scala?rev=1060523&r1=1060522&r2=1060523&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexService.scala (original)
+++ incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexService.scala Tue Jan 18 18:36:53 2011
@@ -59,14 +59,17 @@ class IndexService(definitions: TripleCo
val indexedProperties = for (p <- (for (d <- indexDefinitions)
yield (d/CRIS.indexedProperty)).flatten) yield (p!).asInstanceOf[UriRef]
val index: Directory = new RAMDirectory
- val analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
+ val analyzer = new StandardAnalyzer(Version.LUCENE_30);
+ val basePreamble = new Preamble(baseGraph)
+ import basePreamble._
+
baseGraph.addGraphListener(new GraphListener() {
def graphChanged(events: List[GraphEvent]) {
import scala.collection.JavaConversions._
for (e <- events) {
val triple = e.getTriple
- logger.info("processing addition of type "+triple.getObject)
+ logger.debug("processing addition of type "+triple.getObject)
if (indexedTypes.contains(triple.getObject)) {
scheduleForReindex(triple.getSubject)
}
@@ -94,7 +97,7 @@ class IndexService(definitions: TripleCo
})
def scheduleForReindex(r: Resource) {
- logger.info("Scheduling for reindex: "+r)
+ logger.debug("Scheduling for reindex: "+r)
reindexActor ! r
}
@@ -129,14 +132,13 @@ class IndexService(definitions: TripleCo
reindexActor.start()
def indexResource(resource: Resource, writer: IndexWriter) {
- val basePreamble = new Preamble(baseGraph)
- import basePreamble._
+
def resourceToDocument(resource: Resource) = {
val doc = new Document
for (property <- indexedProperties) {
- logger.info("indexing "+property+" with values "+(resource/property).length)
+ logger.debug("indexing "+property+" with values "+(resource/property).length)
for (propertyValue <- resource/property) {
- logger.info("indexing "+property+" with value "+(propertyValue*))
+ logger.debug("indexing "+property+" with value "+(propertyValue*))
doc.add(new Field(property.getUnicodeString,
propertyValue*,
Field.Store.YES,
@@ -146,9 +148,16 @@ class IndexService(definitions: TripleCo
doc
}
def indexNamedResource(uriRef: UriRef) {
- val doc = resourceToDocument(uriRef)
- doc.add(new Field(URI_FIELD_NAME, uriRef.getUnicodeString, Field.Store.YES, Field.Index.ANALYZED))
- writer.addDocument(doc)
+ val searcher = new IndexSearcher(index, true);
+ val term = new Term(URI_FIELD_NAME, uriRef.getUnicodeString)
+ writer.deleteDocuments(term)
+ //the reindexing might be caused by the removal of a type statement
+ val types = for (tn <- resource/RDF.`type`) yield tn! ;
+ if (types.exists(t => indexedTypes.contains(t))) {
+ val doc = resourceToDocument(uriRef)
+ doc.add(new Field(URI_FIELD_NAME, uriRef.getUnicodeString, Field.Store.YES, Field.Index.NOT_ANALYZED))
+ writer.addDocument(doc)
+ }
}
def indexAnonymousResource(resource: Resource) {
logger.warn("Currently only indexing named resources is supported")
@@ -166,7 +175,7 @@ class IndexService(definitions: TripleCo
val basePreamble = new Preamble(baseGraph)
import basePreamble._
val instances = (for (indexedType <- indexedTypes) yield (indexedType)/-RDF.`type`).flatten
- logger.info("instances "+instances.length)
+ logger.debug("instances "+instances.length)
val writer = new IndexWriter(index, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
for (instance <- instances) indexResource(instance!, writer)
writer.close
@@ -185,7 +194,7 @@ class IndexService(definitions: TripleCo
val collector = TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(booleanQuery, collector)
val hits = collector.topDocs().scoreDocs;
- //logger.info("Found " + hits.length + " hits for "+pattern);
+ //logger.debug("Found " + hits.length + " hits for "+pattern);
def getResource(d: Document): Resource = {
new UriRef(d.get(URI_FIELD_NAME))
}
Modified: incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/IndexServiceTest.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/IndexServiceTest.scala?rev=1060523&r1=1060522&r2=1060523&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/IndexServiceTest.scala (original)
+++ incubator/clerezza/issues/CLEREZZA-388/org.apache.clerezza.rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/IndexServiceTest.scala Tue Jan 18 18:36:53 2011
@@ -58,8 +58,9 @@ class IndexServiceTest {
node.addProperty(CRIS.indexedProperty, p)
}
}
+ definitions.clear()
+ dataGraph.clear()
createDefinition(FOAF.Person, FOAF.firstName, FOAF.lastName)
-
createPerson("John", "Doe")
createPerson("Jane", "Doe")
createPerson("Frank", "Capra")
@@ -120,4 +121,51 @@ class IndexServiceTest {
val results = service.findResources(FOAF.firstName, "*Joe*")
Assert.assertEquals(3, results.length)
}
+
+ @Test
+ def lateAdditionInverse() {
+ import scala.collection.JavaConversions._
+ val node = new GraphNode(new UriRef(Util.createURN5), dataGraph)
+ node.addPropertyValue(FOAF.firstName, "Another Jane")
+ node.addPropertyValue(FOAF.lastName, "Samsing")
+ Thread.sleep(1000)
+ val results = service.findResources(FOAF.firstName, "*Jane*")
+ Assert.assertEquals(2, results.length)
+ node.addProperty(RDF.`type`, FOAF.Person)
+ Thread.sleep(1000)
+ val results2 = service.findResources(FOAF.firstName, "*Jane*")
+ Assert.assertEquals(3, results2.length)
+ }
+
+ @Test
+ def removeTypeTriple() {
+ import scala.collection.JavaConversions._
+ val node = new GraphNode(new UriRef(Util.createURN5), dataGraph)
+ node.addPropertyValue(FOAF.firstName, "Another Jane")
+ node.addPropertyValue(FOAF.lastName, "Samsing")
+ node.addProperty(RDF.`type`, FOAF.Person)
+ Thread.sleep(1000)
+ val results = service.findResources(FOAF.firstName, "*Jane*")
+ Assert.assertEquals(3, results.length)
+ node.deleteProperties(RDF.`type`)
+ Thread.sleep(1000)
+ val results2 = service.findResources(FOAF.firstName, "*Jane*")
+ Assert.assertEquals(2, results2.length)
+ }
+
+ @Test
+ def removeProperty() {
+ import scala.collection.JavaConversions._
+ val node = new GraphNode(new UriRef(Util.createURN5), dataGraph)
+ node.addPropertyValue(FOAF.firstName, "Another Jane")
+ node.addPropertyValue(FOAF.lastName, "Samsing")
+ node.addProperty(RDF.`type`, FOAF.Person)
+ Thread.sleep(1000)
+ val results = service.findResources(FOAF.firstName, "*Jane*")
+ Assert.assertEquals(3, results.length)
+ node.deleteProperties(FOAF.firstName)
+ Thread.sleep(1000)
+ val results2 = service.findResources(FOAF.firstName, "*Jane*")
+ Assert.assertEquals(2, results2.length)
+ }
}