@Override public <RET> RET getProperty(String name) { return element == null ? null : element.getProperty(name); }
protected static boolean comparesValues(final Object iValue, final ORecord iRecord, final boolean iConsiderIn) { // ORID && RECORD final ORID other = ((ORecord) iRecord).getIdentity(); if (!other.isPersistent() && iRecord instanceof ODocument) { // ODOCUMENT AS RESULT OF SUB-QUERY: GET THE FIRST FIELD IF ANY final Set<String> firstFieldName = ((ODocument) iRecord).getPropertyNames(); if (firstFieldName.size() > 0) { Object fieldValue = ((ODocument) iRecord).getProperty(firstFieldName.iterator().next()); if (fieldValue != null) { if (iConsiderIn && OMultiValue.isMultiValue(fieldValue)) { for (Object o : OMultiValue.getMultiValueIterable(fieldValue, false)) { if (o != null && o.equals(iValue)) return true; } } return fieldValue.equals(iValue); } } return false; } return other.equals(iValue); }
@Override public <RET> RET getProperty(String name) { return element.getProperty(name); }
private static OResultInternal calculateAfter(ODocument iDocument) { OResultInternal result = new OResultInternal(); for (String prop : iDocument.getPropertyNames()) { result.setProperty(prop, unboxRidbags(iDocument.getProperty(prop))); } result.setProperty("@rid", iDocument.getIdentity()); result.setProperty("@class", iDocument.getClassName()); result.setProperty("@version", iDocument.getVersion() + 1); return result; }
public static List<SortField> buildSortFields(ODocument metadata) { List<Map<String, Object>> sortConf = Optional.ofNullable(metadata.<List<Map<String, Object>>>getProperty("sort")) .orElse(Collections.emptyList()); final List<SortField> fields = sortConf.stream() .map(d -> buildSortField(d)) .collect(Collectors.toList()); return fields; }
private static OResultInternal calculateBefore(ODocument iDocument) { OResultInternal result = new OResultInternal(); for (String prop : iDocument.getPropertyNames()) { result.setProperty(prop, unboxRidbags(iDocument.getProperty(prop))); } result.setProperty("@rid", iDocument.getIdentity()); result.setProperty("@class", iDocument.getClassName()); result.setProperty("@version", iDocument.getVersion()); for (String prop : iDocument.getDirtyFields()) { result.setProperty(prop, iDocument.getOriginalValue(prop)); } return result; }
@Override public void init(String indexName, String indexType, OIndexDefinition indexDefinition, boolean isAutomatic, ODocument metadata) { this.indexDefinition = indexDefinition; this.metadata = metadata; OLuceneAnalyzerFactory fc = new OLuceneAnalyzerFactory(); indexAnalyzer = fc.createAnalyzer(indexDefinition, INDEX, metadata); queryAnalyzer = fc.createAnalyzer(indexDefinition, QUERY, metadata); checkCollectionIndex(indexDefinition); flushIndexInterval = Optional.ofNullable(metadata.<Integer>getProperty("flushIndexInterval")).orElse(10000).longValue(); closeAfterInterval = Optional.ofNullable(metadata.<Integer>getProperty("closeAfterInterval")).orElse(120000).longValue(); firstFlushAfter = Optional.ofNullable(metadata.<Integer>getProperty("firstFlushAfter")).orElse(10000).longValue(); }
value = rec.getProperty(fieldName); if (value instanceof byte[]) value = "byte[" + ((byte[]) value).length + "]";
private MoreLikeThis buildMoreLikeThis(OLuceneFullTextIndex index, IndexSearcher searcher, ODocument metadata) { MoreLikeThis mlt = new MoreLikeThis(searcher.getIndexReader()); mlt.setAnalyzer(index.queryAnalyzer()); mlt.setFieldNames( Optional.ofNullable(metadata.<List<String>>getProperty("fieldNames")).orElse(index.getDefinition().getFields()) .toArray(new String[] {})); mlt.setMaxQueryTerms( Optional.ofNullable(metadata.<Integer>getProperty("maxQueryTerms")).orElse(MoreLikeThis.DEFAULT_MAX_QUERY_TERMS)); mlt.setMinTermFreq( Optional.ofNullable(metadata.<Integer>getProperty("minTermFreq")).orElse(MoreLikeThis.DEFAULT_MIN_TERM_FREQ)); mlt.setMaxDocFreq(Optional.ofNullable(metadata.<Integer>getProperty("maxDocFreq")).orElse(MoreLikeThis.DEFAULT_MAX_DOC_FREQ)); mlt.setMinDocFreq(Optional.ofNullable(metadata.<Integer>getProperty("minDocFreq")).orElse(MoreLikeThis.DEFAULT_MAX_DOC_FREQ)); mlt.setBoost(Optional.ofNullable(metadata.<Boolean>getProperty("boost")).orElse(MoreLikeThis.DEFAULT_BOOST)); mlt.setBoostFactor(Optional.ofNullable(metadata.<Float>getProperty("boostFactor")).orElse(1f)); mlt.setMaxWordLen( Optional.ofNullable(metadata.<Integer>getProperty("maxWordLen")).orElse(MoreLikeThis.DEFAULT_MAX_WORD_LENGTH)); mlt.setMinWordLen( Optional.ofNullable(metadata.<Integer>getProperty("minWordLen")).orElse(MoreLikeThis.DEFAULT_MIN_WORD_LENGTH)); mlt.setMaxNumTokensParsed(Optional.ofNullable(metadata.<Integer>getProperty("maxNumTokensParsed")) .orElse(MoreLikeThis.DEFAULT_MAX_NUM_TOKENS_PARSED)); mlt.setStopWords((Set<?>) Optional.ofNullable(metadata.getProperty("stopWords")).orElse(MoreLikeThis.DEFAULT_STOP_WORDS)); return mlt; }
@Override public OBlob getBlobProperty(String name) { Object result = null; if (content.containsKey(name)) { result = content.get(name); } else if (element != null) { result = ((ODocument) element.getRecord()).getProperty(name); } if (result instanceof OResult) { result = ((OResult) result).getRecord().orElse(null); } if (result instanceof ORID) { result = ((ORID) result).getRecord(); } return result instanceof OBlob ? (OBlob) result : null; }
@ConsoleCommand(splitInWords = false, description = "Explain how a command is executed profiling it", onlineHelp = "SQL-Explain") public void explain(@ConsoleParameter(name = "command-text", description = "The command text to execute") String iCommandText) { Object result = sqlCommand("explain", iCommandText, "\n", false); if (result != null && result instanceof ODocument) { message(((ODocument) result).getProperty("executionPlanAsString")); } else if (result != null && result instanceof List && ((List) result).size() == 1 && ((List) result) .get(0) instanceof OResult) { message(((OResult) (((List) result).get(0))).getProperty("executionPlanAsString")); } else if (result != null && result instanceof List && ((List) result).size() == 1 && ((List) result) .get(0) instanceof ODocument) { message(((ODocument) (((List) result).get(0))).getProperty("executionPlanAsString")); } }
public OLuceneResultSet(OLuceneIndexEngine engine, OLuceneQueryContext queryContext, ODocument metadata) { this.engine = engine; this.queryContext = queryContext; this.query = queryContext.getQuery(); indexName = engine.indexName(); fetchFirstBatch(); deletedMatchCount = calculateDeletedMatch(); Map<String, Object> highlight = Optional.ofNullable(metadata.<Map>getProperty("highlight")).orElse(Collections.emptyMap()); highlighted = Optional.ofNullable((List<String>) highlight.get("fields")).orElse(Collections.emptyList()); String startElement = (String) Optional.ofNullable(highlight.get("start")).orElse("<B>"); String endElement = (String) Optional.ofNullable(highlight.get("end")).orElse("</B>"); Scorer scorer = new QueryTermScorer(queryContext.getQuery()); Formatter formatter = new SimpleHTMLFormatter(startElement, endElement); highlighter = new Highlighter(formatter, scorer); maxNumFragments = (int) Optional.ofNullable(highlight.get("maxNumFragments")).orElse(2); }
@Override public OElement getElementProperty(String name) { Object result = null; if (content.containsKey(name)) { result = content.get(name); } else if (element != null) { result = ((ODocument) element.getRecord()).getProperty(name); } if (result instanceof OResult) { result = ((OResult) result).getRecord().orElse(null); } if (result instanceof ORID) { result = ((ORID) result).getRecord(); } return result instanceof OElement ? (OElement) result : null; }
@Override public OEdge getEdgeProperty(String name) { Object result = null; if (content.containsKey(name)) { result = content.get(name); } else if (element != null) { result = ((ODocument) element.getRecord()).getProperty(name); } if (result instanceof OResult) { result = ((OResult) result).getRecord().orElse(null); } if (result instanceof ORID) { result = ((ORID) result).getRecord(); } return result instanceof OElement ? ((OElement) result).asEdge().orElse(null) : null; }
private Query getQuery(OIndexDefinition index, String query, ODocument metadata, Analyzer queryAnalyzer, String[] fields, Map<String, OType> types) throws ParseException { Map<String, Float> boost = Optional.ofNullable(metadata.<Map<String, Float>>getProperty("boost")).orElse(new HashMap<>()); Analyzer analyzer = Optional.ofNullable(metadata.<Boolean>getProperty("customAnalysis")).filter(b -> b == true) .map(b -> analyzerFactory.createAnalyzer(index, OLuceneAnalyzerFactory.AnalyzerKind.QUERY, metadata)).orElse(queryAnalyzer); final OLuceneMultiFieldQueryParser queryParser = new OLuceneMultiFieldQueryParser(types, fields, analyzer, boost); queryParser.setAllowLeadingWildcard( Optional.ofNullable(metadata.<Boolean>getProperty("allowLeadingWildcard")).orElse(allowLeadingWildcard)); queryParser.setSplitOnWhitespace( Optional.ofNullable(metadata.<Boolean>getProperty("splitOnWhitespace")).orElse(splitOnWhitespace)); // TODO REMOVED // queryParser.setLowercaseExpandedTerms( // Optional.ofNullable(metadata.<Boolean>getProperty("lowercaseExpandedTerms")) // .orElse(lowercaseExpandedTerms)); try { return queryParser.parse(query); } catch (org.apache.lucene.queryparser.classic.ParseException e) { OLogManager.instance().error(this, "Exception is suppressed, original exception is ", e); //noinspection ThrowInsideCatchBlockWhichIgnoresCaughtException throw new ParseException(e.getMessage()); } }
@Override public OVertex getVertexProperty(String name) { Object result = null; if (content.containsKey(name)) { result = content.get(name); } else if (element != null) { result = ((ODocument) element.getRecord()).getProperty(name); } if (result instanceof OResult) { result = ((OResult) result).getRecord().orElse(null); } if (result instanceof ORID) { result = ((ORID) result).getRecord(); } return result instanceof OElement ? ((OElement) result).asVertex().orElse(null) : null; }
private Object getFieldValue(final int iIndex, final OIdentifiable iRecord, final String iColumnName) { Object value = null; if (iColumnName.equals("#")) // RECORD NUMBER value = iIndex > -1 ? iIndex : ""; else if (iColumnName.equals("@RID")) // RID value = iRecord.getIdentity().toString(); else if (iRecord instanceof ODocument) value = ((ODocument) iRecord).getProperty(iColumnName); else if (iRecord instanceof OBlob) value = "<binary> (size=" + ((OBlob) iRecord).toStream().length + " bytes)"; else if (iRecord instanceof OIdentifiable) { final ORecord rec = iRecord.getRecord(); if (rec instanceof ODocument) value = ((ODocument) rec).getProperty(iColumnName); else if (rec instanceof OBlob) value = "<binary> (size=" + ((OBlob) rec).toStream().length + " bytes)"; } return getPrettyFieldValue(value, maxMultiValueEntries); }
@Override public OVertex getTo() { if (vIn != null) // LIGHTWEIGHT EDGE return vIn; final ODocument doc = getRecord(); if (doc == null) return null; Object result = doc.getProperty(DIRECTION_IN); if (!(result instanceof OElement)) { return null; } OElement v = (OElement) result; if (!v.isVertex()) { return null;//TODO optional...? } return v.asVertex().get(); }
@Override public OVertex getFrom() { if (vOut != null) // LIGHTWEIGHT EDGE return vOut; final ODocument doc = getRecord(); if (doc == null) return null; Object result = doc.getProperty(DIRECTION_OUT); if (!(result instanceof OElement)) { return null; } OElement v = (OElement) result; if (!v.isVertex()) { return null;//TODO optional...? } return v.asVertex().get(); }
public <T> T getProperty(String name) { T result = null; if (content.containsKey(name)) { result = (T) wrap(content.get(name)); } else if (element != null) { result = (T) wrap(((ODocument) element.getRecord()).getProperty(name)); } if (result instanceof OIdentifiable && ((OIdentifiable) result).getIdentity().isPersistent()) { result = (T) ((OIdentifiable) result).getIdentity(); } return result; }