diff --git a/config/orientdb-server-config.xml b/config/orientdb-server-config.xml
index a11f23c..b358de5 100644
--- a/config/orientdb-server-config.xml
+++ b/config/orientdb-server-config.xml
@@ -19,7 +19,7 @@
-
+
diff --git a/plugins/studio.zip b/plugins/studio.zip
deleted file mode 100644
index 45026f1..0000000
Binary files a/plugins/studio.zip and /dev/null differ
diff --git a/src/main/assembly/assembly.xml b/src/main/assembly/assembly.xml
index 3182c74..4a8b2c8 100644
--- a/src/main/assembly/assembly.xml
+++ b/src/main/assembly/assembly.xml
@@ -13,12 +13,8 @@
org.apache.lucene:*
com.spatial4j:*
-
-
- **/plugin.json
-
-
+
-
+
\ No newline at end of file
diff --git a/src/main/java/com/orientechnologies/lucene/OEnterpriseLuceneIndex.java b/src/main/java/com/orientechnologies/lucene/OLuceneIndexPlugin.java
similarity index 56%
rename from src/main/java/com/orientechnologies/lucene/OEnterpriseLuceneIndex.java
rename to src/main/java/com/orientechnologies/lucene/OLuceneIndexPlugin.java
index 6abe103..a5d5494 100644
--- a/src/main/java/com/orientechnologies/lucene/OEnterpriseLuceneIndex.java
+++ b/src/main/java/com/orientechnologies/lucene/OLuceneIndexPlugin.java
@@ -16,24 +16,39 @@
package com.orientechnologies.lucene;
+import com.orientechnologies.common.util.OClassLoaderHelper;
+import com.orientechnologies.lucene.operator.OLuceneNearOperator;
+import com.orientechnologies.lucene.operator.OLuceneTextOperator;
+import com.orientechnologies.lucene.operator.OLuceneWithinOperator;
+import com.orientechnologies.orient.core.index.OIndexes;
+import com.orientechnologies.orient.core.sql.OSQLEngine;
+import com.orientechnologies.orient.core.sql.functions.OSQLFunction;
import com.orientechnologies.orient.server.OServer;
import com.orientechnologies.orient.server.config.OServerParameterConfiguration;
import com.orientechnologies.orient.server.plugin.OServerPluginAbstract;
-public class OEnterpriseLuceneIndex extends OServerPluginAbstract {
+import javax.imageio.spi.ServiceRegistry;
+import java.util.Iterator;
- public OEnterpriseLuceneIndex() {
+public class OLuceneIndexPlugin extends OServerPluginAbstract {
+
+ public OLuceneIndexPlugin() {
}
@Override
public String getName() {
- return "enterprise-lucene";
+ return "lucene-index";
}
@Override
public void startup() {
super.startup();
// Orient.instance().addDbLifecycleListener(new OLuceneClassIndexManager());
+
+ OIndexes.registerFactory(new OLuceneIndexFactory());
+ OSQLEngine.registerOperator(new OLuceneTextOperator());
+ OSQLEngine.registerOperator(new OLuceneWithinOperator());
+ OSQLEngine.registerOperator(new OLuceneNearOperator());
}
@Override
diff --git a/src/main/java/com/orientechnologies/lucene/operator/OLuceneNearOperator.java b/src/main/java/com/orientechnologies/lucene/operator/OLuceneNearOperator.java
index e4ac258..00f7eb4 100644
--- a/src/main/java/com/orientechnologies/lucene/operator/OLuceneNearOperator.java
+++ b/src/main/java/com/orientechnologies/lucene/operator/OLuceneNearOperator.java
@@ -22,11 +22,10 @@
import com.orientechnologies.lucene.collections.OSpatialCompositeKey;
import com.orientechnologies.orient.core.command.OCommandContext;
+import com.orientechnologies.orient.core.db.ODatabaseComplex;
import com.orientechnologies.orient.core.db.record.OIdentifiable;
import com.orientechnologies.orient.core.id.ORID;
-import com.orientechnologies.orient.core.index.OIndex;
-import com.orientechnologies.orient.core.index.OIndexCursor;
-import com.orientechnologies.orient.core.index.OIndexDefinition;
+import com.orientechnologies.orient.core.index.*;
import com.orientechnologies.orient.core.metadata.schema.OClass;
import com.orientechnologies.orient.core.metadata.schema.OType;
import com.orientechnologies.orient.core.record.impl.ODocument;
@@ -35,29 +34,30 @@
import com.orientechnologies.orient.core.sql.filter.OSQLFilterItemField;
import com.orientechnologies.orient.core.sql.operator.OIndexReuseType;
import com.orientechnologies.orient.core.sql.operator.OQueryOperatorEqualityNotNulls;
+import com.orientechnologies.orient.core.sql.operator.OQueryTargetOperator;
import com.spatial4j.core.context.SpatialContext;
import com.spatial4j.core.distance.DistanceUtils;
import com.spatial4j.core.shape.Point;
-public class OLuceneNearOperator extends OQueryOperatorEqualityNotNulls {
+public class OLuceneNearOperator extends OQueryTargetOperator {
public OLuceneNearOperator() {
- super("NEAR", 5, false, 1, true);
+ super("NEAR", 5, false);
}
- @Override
- protected boolean evaluateExpression(OIdentifiable iRecord, OSQLFilterCondition iCondition, Object iLeft, Object iRight,
- OCommandContext iContext) {
-
- SpatialContext ctx = SpatialContext.GEO;
- Object[] points = parseParams(iRecord, iCondition);
- Point p = ctx.makePoint((Double) points[3], (Double) points[2]);
-
- double docDistDEG = ctx.getDistCalc().distance(p, (Double) points[1], (Double) points[0]);
- double docDistInKM = DistanceUtils.degrees2Dist(docDistDEG, DistanceUtils.EARTH_EQUATORIAL_RADIUS_KM);
- iContext.setVariable("$distance", docDistInKM);
- return true;
- }
+ // @Override
+ // protected boolean evaluateExpression(OIdentifiable iRecord, OSQLFilterCondition iCondition, Object iLeft, Object iRight,
+ // OCommandContext iContext) {
+ //
+ // SpatialContext ctx = SpatialContext.GEO;
+ // Object[] points = parseParams(iRecord, iCondition);
+ // Point p = ctx.makePoint((Double) points[3], (Double) points[2]);
+ //
+ // double docDistDEG = ctx.getDistCalc().distance(p, (Double) points[1], (Double) points[0]);
+ // double docDistInKM = DistanceUtils.degrees2Dist(docDistDEG, DistanceUtils.EARTH_EQUATORIAL_RADIUS_KM);
+ // iContext.setVariable("$distance", docDistInKM);
+ // return true;
+ // }
private Object[] parseParams(OIdentifiable iRecord, OSQLFilterCondition iCondition) {
@@ -109,10 +109,10 @@ public OIndexCursor executeIndexQuery(OCommandContext iContext, OIndex> index,
}
Object indexResult = index.get(new OSpatialCompositeKey(keyParams).setMaxDistance(distance).setLimit(limit));
if (indexResult == null || indexResult instanceof OIdentifiable)
- cursor = new OIndexCursor.OIndexCursorSingleValue((OIdentifiable) indexResult, new OSpatialCompositeKey(keyParams));
+ cursor = new OIndexCursorSingleValue((OIdentifiable) indexResult, new OSpatialCompositeKey(keyParams));
else
- cursor = new OIndexCursor.OIndexCursorCollectionValue(((Collection) indexResult).iterator(),
- new OSpatialCompositeKey(keyParams));
+ cursor = new OIndexCursorCollectionValue(((Collection) indexResult).iterator(), new OSpatialCompositeKey(
+ keyParams));
return cursor;
}
@@ -142,4 +142,9 @@ public OIndexSearchResult getOIndexSearchResult(OClass iSchemaClass, OSQLFilterC
return OLuceneOperatorUtil.buildOIndexSearchResult(iSchemaClass, iCondition, iIndexSearchResults, context);
}
+ @Override
+ public Collection filterRecords(ODatabaseComplex> iRecord, List iTargetClasses,
+ OSQLFilterCondition iCondition, Object iLeft, Object iRight) {
+ return null;
+ }
}
diff --git a/src/main/java/com/orientechnologies/lucene/operator/OLuceneOperatorFactory.java b/src/main/java/com/orientechnologies/lucene/operator/OLuceneOperatorFactory.java
deleted file mode 100644
index dcf8de3..0000000
--- a/src/main/java/com/orientechnologies/lucene/operator/OLuceneOperatorFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2014 Orient Technologies.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.orientechnologies.lucene.operator;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import com.orientechnologies.orient.core.sql.operator.OQueryOperator;
-import com.orientechnologies.orient.core.sql.operator.OQueryOperatorFactory;
-
-
-public class OLuceneOperatorFactory implements OQueryOperatorFactory {
-
- private static final Set OPERATORS;
-
- static {
- final Set operators = new HashSet();
- operators.add(new OLuceneNearOperator());
- operators.add(new OLuceneWithinOperator());
- operators.add(new OLuceneTextOperator());
- OPERATORS = Collections.unmodifiableSet(operators);
- }
-
- @Override
- public Set getOperators() {
- return OPERATORS;
- }
-}
diff --git a/src/main/java/com/orientechnologies/lucene/operator/OLuceneTextOperator.java b/src/main/java/com/orientechnologies/lucene/operator/OLuceneTextOperator.java
index ef495cf..ddf0b13 100644
--- a/src/main/java/com/orientechnologies/lucene/operator/OLuceneTextOperator.java
+++ b/src/main/java/com/orientechnologies/lucene/operator/OLuceneTextOperator.java
@@ -21,37 +21,38 @@
import com.orientechnologies.lucene.collections.OSpatialCompositeKey;
import com.orientechnologies.orient.core.command.OCommandContext;
+import com.orientechnologies.orient.core.db.ODatabaseComplex;
import com.orientechnologies.orient.core.db.record.OIdentifiable;
import com.orientechnologies.orient.core.id.ORID;
-import com.orientechnologies.orient.core.index.OCompositeKey;
-import com.orientechnologies.orient.core.index.OIndex;
-import com.orientechnologies.orient.core.index.OIndexCursor;
+import com.orientechnologies.orient.core.index.*;
import com.orientechnologies.orient.core.metadata.schema.OClass;
+import com.orientechnologies.orient.core.record.impl.ODocument;
import com.orientechnologies.orient.core.sql.OIndexSearchResult;
import com.orientechnologies.orient.core.sql.filter.OSQLFilterCondition;
import com.orientechnologies.orient.core.sql.operator.OIndexReuseType;
import com.orientechnologies.orient.core.sql.operator.OQueryOperatorEqualityNotNulls;
+import com.orientechnologies.orient.core.sql.operator.OQueryTargetOperator;
-public class OLuceneTextOperator extends OQueryOperatorEqualityNotNulls {
+public class OLuceneTextOperator extends OQueryTargetOperator {
public OLuceneTextOperator() {
- super("LUCENE", 5, false, 1, true);
+ super("LUCENE", 5, false);
}
- @Override
- protected boolean evaluateExpression(OIdentifiable iRecord, OSQLFilterCondition iCondition, Object iLeft, Object iRight,
- OCommandContext iContext) {
- return true;
- }
+ // @Override
+ // protected boolean evaluateExpression(OIdentifiable iRecord, OSQLFilterCondition iCondition, Object iLeft, Object iRight,
+ // OCommandContext iContext) {
+ // return false;
+ // }
@Override
public OIndexCursor executeIndexQuery(OCommandContext iContext, OIndex> index, List