private String convertNumber(Number number) { if (Integer.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (Double.class.isInstance(number)) { return NumericUtils.doubleToPrefixCoded(number.doubleValue()); } else if (Long.class.isInstance(number)) { return NumericUtils.longToPrefixCoded(number.longValue()); } else if (Float.class.isInstance(number)) { return NumericUtils.floatToPrefixCoded(number.floatValue()); } else if (Byte.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (Short.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (BigDecimal.class.isInstance(number)) { return NumericUtils.doubleToPrefixCoded(number.doubleValue()); } else if (BigInteger.class.isInstance(number)) { return NumericUtils.longToPrefixCoded(number.longValue()); } else { throw new IllegalArgumentException("Unsupported numeric type " + number.getClass().getName()); } }
private Query getTermQuery(final String fieldName, final Double value) { return new TermQuery(new Term(DocumentConstants.LUCENE_SORTFIELD_PREFIX + fieldName, NumericUtils.doubleToPrefixCoded(value))); } }
private String convertNumber(Number number) { if (Integer.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (Double.class.isInstance(number)) { return NumericUtils.doubleToPrefixCoded(number.doubleValue()); } else if (Long.class.isInstance(number)) { return NumericUtils.longToPrefixCoded(number.longValue()); } else if (Float.class.isInstance(number)) { return NumericUtils.floatToPrefixCoded(number.floatValue()); } else if (Byte.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (Short.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (BigDecimal.class.isInstance(number)) { return NumericUtils.doubleToPrefixCoded(number.doubleValue()); } else if (BigInteger.class.isInstance(number)) { return NumericUtils.longToPrefixCoded(number.longValue()); } else { throw new IllegalArgumentException("Unsupported numeric type " + number.getClass().getName()); } }
private String convertNumber(Number number) { if (Integer.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (Double.class.isInstance(number)) { return NumericUtils.doubleToPrefixCoded(number.doubleValue()); } else if (Long.class.isInstance(number)) { return NumericUtils.longToPrefixCoded(number.longValue()); } else if (Float.class.isInstance(number)) { return NumericUtils.floatToPrefixCoded(number.floatValue()); } else if (Byte.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (Short.class.isInstance(number)) { return NumericUtils.intToPrefixCoded(number.intValue()); } else if (BigDecimal.class.isInstance(number)) { return NumericUtils.doubleToPrefixCoded(number.doubleValue()); } else if (BigInteger.class.isInstance(number)) { return NumericUtils.longToPrefixCoded(number.longValue()); } else { throw new IllegalArgumentException("Unsupported numeric type " + number.getClass().getName()); } }
private void addDocumentFields(final Document doc, final Issue issue, final boolean searchable) { Object value = customField.getValue(issue); if (value != null) { final String string = doubleConverter.getStringForLucene((Double) value); doc.add(new Field(getDocumentFieldId(), string, Field.Store.YES, searchable ? Field.Index.NOT_ANALYZED_NO_NORMS : Field.Index.NO)); } if (searchable) { // We store this field twice in the index, because historically JIRA indexed the number in a format that did not sort negative numbers correctly. // We now index the field using the properly encoded format to allow sorting. To keep backward compatibility with third party plugins we retain // the old stored value and also index the old value, although these plugins should migrate to using NumberCustomFieldClauseQueryFactory. final String encoded = NumericUtils.doubleToPrefixCoded(value != null ? (Double) value : Double.MAX_VALUE); doc.add(new Field(DocumentConstants.LUCENE_SORTFIELD_PREFIX + getDocumentFieldId(), encoded, Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS)); } } }
public String normalizeFieldValue(String field, Object value) { if (NumberUtils.isNumber(value.toString())) { Number n = NumberUtils.createNumber(value.toString()); if (n instanceof Integer) return NumericUtils.intToPrefixCoded((Integer) n); else if (n instanceof Long) return NumericUtils.longToPrefixCoded((Long) n); else if (n instanceof Float) return NumericUtils.floatToPrefixCoded((Float) n); else if (n instanceof Double) return NumericUtils.doubleToPrefixCoded((Double) n); else throw new IllegalArgumentException("Unhandled numeric type: " + n.getClass()); } else { throw new IllegalArgumentException("Value is not a number: " + value); } }
Query query = RANGE_QUERY_FACTORY.get(operator, DocumentConstants.LUCENE_SORTFIELD_PREFIX + fieldName, NumericUtils.doubleToPrefixCoded(value)); combined.add(new TermQuery(new Term(DocumentConstants.LUCENE_SORTFIELD_PREFIX + fieldName, NumericUtils.doubleToPrefixCoded(emptyIndexValue))), BooleanClause.Occur.MUST_NOT); query = combined;
@Override @Deprecated public void addGeoProperty(String field, String value) { LuceneIndex.addStoredOnlyPredicateField(field, value, doc); SpatialStrategy geoStrategy = geoStrategyMapper.apply(field); try { Shape shape = geoStrategy.getSpatialContext().readShapeFromWkt(value); if (shape instanceof Point) { Point p = (Point)shape; doc.add(new Field(LuceneIndex.GEOHASH_FIELD_PREFIX + field, GeoHashUtils.encode(p.getY(), p.getX()), Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS)); for (CartesianTierPlotter ctp : geoStrategy.getPlotters()) { double boxId = ctp.getTierBoxId(p.getY(), p.getX()); doc.add(new Field(ctp.getTierFieldName(), NumericUtils.doubleToPrefixCoded(boxId), Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS)); } } } catch (ParseException e) { // ignore } } }
d = ((Double) value).doubleValue(); normalizedValue = NumericUtils.doubleToPrefixCoded(d); break; case DATE: