com.orientechnologies.lucene.functions.OLuceneSearchOnFieldsFunction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of orientdb-lucene Show documentation
Show all versions of orientdb-lucene Show documentation
Lucene plugin for OrientDB NoSQL document graph dbms
The newest version!
package com.orientechnologies.lucene.functions;
import static com.orientechnologies.lucene.functions.OLuceneFunctionsUtils.getOrCreateMemoryIndex;
import com.orientechnologies.lucene.builder.OLuceneQueryBuilder;
import com.orientechnologies.lucene.collections.OLuceneCompositeKey;
import com.orientechnologies.lucene.index.OLuceneFullTextIndex;
import com.orientechnologies.lucene.query.OLuceneKeyAndMetadata;
import com.orientechnologies.orient.core.command.OCommandContext;
import com.orientechnologies.orient.core.db.record.OIdentifiable;
import com.orientechnologies.orient.core.id.ORID;
import com.orientechnologies.orient.core.metadata.OMetadataInternal;
import com.orientechnologies.orient.core.record.OElement;
import com.orientechnologies.orient.core.record.impl.ODocument;
import com.orientechnologies.orient.core.sql.executor.OResult;
import com.orientechnologies.orient.core.sql.executor.OResultInternal;
import com.orientechnologies.orient.core.sql.parser.OBinaryCompareOperator;
import com.orientechnologies.orient.core.sql.parser.OExpression;
import com.orientechnologies.orient.core.sql.parser.OFromClause;
import com.orientechnologies.orient.core.sql.parser.OFromItem;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.lucene.index.IndexableField;
import org.apache.lucene.index.memory.MemoryIndex;
/** Created by frank on 15/01/2017. */
public class OLuceneSearchOnFieldsFunction extends OLuceneSearchFunctionTemplate {
public static final String NAME = "search_fields";
public OLuceneSearchOnFieldsFunction() {
super(NAME, 2, 3);
}
@Override
public String getName() {
return NAME;
}
@Override
public Object execute(
Object iThis,
OIdentifiable iCurrentRecord,
Object iCurrentResult,
Object[] params,
OCommandContext ctx) {
if (iThis instanceof ORID) {
iThis = ((ORID) iThis).getRecord();
}
if (iThis instanceof OIdentifiable) {
iThis = new OResultInternal((OIdentifiable) iThis);
}
OResult result = (OResult) iThis;
if (!result.getElement().isPresent()) return false;
OElement element = result.getElement().get();
if (!element.getSchemaType().isPresent()) return false;
String className = element.getSchemaType().get().getName();
List fieldNames = (List) params[0];
OLuceneFullTextIndex index = searchForIndex(className, ctx, fieldNames);
if (index == null) return false;
String query = (String) params[1];
MemoryIndex memoryIndex = getOrCreateMemoryIndex(ctx);
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy