use of com.xiaomi.linden.thrift.common.LindenFieldSchema in project linden by XiaoMi.
the class LindenQueryParser method getRangeQuery.
@Override
protected Query getRangeQuery(String field, String min, String max, boolean startInclusive, boolean endInclusive) {
LindenFieldSchema fieldSchema = config.getFieldSchema(field);
String name = fieldSchema.getName();
LindenType indexFieldType = fieldSchema.getType();
Query query = null;
switch(indexFieldType) {
case STRING:
query = new TermRangeQuery(name, bytesRefVal(min), bytesRefVal(max), startInclusive, endInclusive);
break;
case INTEGER:
query = NumericRangeQuery.newIntRange(name, intVal(min), intVal(max), startInclusive, endInclusive);
break;
case LONG:
query = NumericRangeQuery.newLongRange(name, longVal(min), longVal(max), startInclusive, endInclusive);
break;
case DOUBLE:
query = NumericRangeQuery.newDoubleRange(name, doubleVal(min), doubleVal(max), startInclusive, endInclusive);
break;
case FLOAT:
query = NumericRangeQuery.newFloatRange(name, floatVal(min), floatVal(max), startInclusive, endInclusive);
break;
default:
break;
}
return query;
}
use of com.xiaomi.linden.thrift.common.LindenFieldSchema in project linden by XiaoMi.
the class TestLindenJiebaAnalyzerSearchMode method init.
@Override
public void init() {
lindenConfig.setIndexType(LindenConfig.IndexType.RAM);
lindenConfig.setClusterUrl("127.0.0.1:2181/mock");
LindenSchema schema = new LindenSchema().setId("id");
schema.addToFields(new LindenFieldSchema().setName("title").setIndexed(true).setTokenized(true).setSnippet(true).setMulti(true));
lindenConfig.setSchema(schema);
lindenConfig.putToProperties("search.analyzer.class", "com.xiaomi.linden.lucene.analyzer.LindenJiebaAnalyzerFactory");
lindenConfig.putToProperties("index.analyzer.class", "com.xiaomi.linden.lucene.analyzer.LindenJiebaAnalyzerFactory");
lindenConfig.putToProperties("index.analyzer.mode", "search");
}
use of com.xiaomi.linden.thrift.common.LindenFieldSchema in project linden by XiaoMi.
the class TestLindenMMSeg4jAnalyzer method init.
@Override
public void init() {
lindenConfig.setIndexType(LindenConfig.IndexType.RAM);
lindenConfig.setClusterUrl("127.0.0.1:2181/mock");
LindenSchema schema = new LindenSchema().setId("id");
schema.addToFields(new LindenFieldSchema().setName("title").setIndexed(true).setTokenized(true).setSnippet(true).setMulti(true));
lindenConfig.setSchema(schema);
lindenConfig.putToProperties("search.analyzer.class", "com.xiaomi.linden.lucene.analyzer.LindenMMSeg4jAnalyzerFactory");
lindenConfig.putToProperties("index.analyzer.class", "com.xiaomi.linden.lucene.analyzer.LindenMMSeg4jAnalyzerFactory");
}
use of com.xiaomi.linden.thrift.common.LindenFieldSchema in project linden by XiaoMi.
the class TestGlobalIDF method init.
@Override
public void init() throws Exception {
LindenSchema schema = new LindenSchema().setId("id");
schema.addToFields(new LindenFieldSchema().setName("title").setIndexed(true).setStored(true).setTokenized(true).setOmitNorms(true));
schema.addToFields(new LindenFieldSchema().setName("field1").setIndexed(true).setStored(true).setTokenized(true).setOmitNorms(true));
schema.addToFields(new LindenFieldSchema().setName("field2").setIndexed(true).setStored(true).setTokenized(true).setOmitNorms(true));
schema.addToFields(new LindenFieldSchema().setName("rank").setType(LindenType.FLOAT).setIndexed(true).setStored(true));
schema.addToFields(new LindenFieldSchema().setName("cat1").setType(LindenType.INTEGER).setIndexed(true).setStored(true));
schema.addToFields(new LindenFieldSchema().setName("cat2").setType(LindenType.DOUBLE).setIndexed(true).setStored(true));
schema.addToFields(new LindenFieldSchema().setName("tagstr").setIndexed(true));
schema.addToFields(new LindenFieldSchema().setName("tagnum").setType(LindenType.INTEGER).setIndexed(true));
lindenConfig.setSchema(schema);
}
use of com.xiaomi.linden.thrift.common.LindenFieldSchema in project linden by XiaoMi.
the class LindenDocParser method parse.
public static Document parse(LindenDocument lindenDoc, LindenConfig config) {
if (!lindenDoc.isSetFields()) {
return null;
}
Document doc = new Document();
doc.add(new StringField(config.getSchema().getId(), lindenDoc.getId(), Field.Store.YES));
for (LindenField field : lindenDoc.getFields()) {
LindenFieldSchema schema = field.getSchema();
Field.Store isStored = schema.isStored() ? Field.Store.YES : Field.Store.NO;
String name = field.getSchema().getName();
Object value;
if (!schema.isIndexed() && schema.isStored()) {
doc.add(new Field(name, field.getValue(), STORED_ONLY));
}
switch(schema.getType()) {
case INTEGER:
value = Integer.valueOf(field.getValue());
if (schema.isIndexed()) {
doc.add(new IntField(name, (Integer) value, isStored));
}
if (schema.isDocValues()) {
long docValuesBits = ((Integer) value).longValue();
doc.add(new NumericDocValuesField(name, docValuesBits));
}
break;
case LONG:
value = Long.valueOf(field.getValue());
if (schema.isIndexed()) {
doc.add(new LongField(name, (Long) value, isStored));
}
if (schema.isDocValues()) {
doc.add(new NumericDocValuesField(name, (long) value));
}
break;
case DOUBLE:
value = Double.valueOf(field.getValue());
if (schema.isIndexed()) {
doc.add(new DoubleField(name, (Double) value, isStored));
}
if (schema.isDocValues()) {
long docValuesBits = Double.doubleToLongBits((Double) value);
doc.add(new NumericDocValuesField(name, docValuesBits));
}
break;
case FLOAT:
value = Float.valueOf(field.getValue());
if (schema.isIndexed()) {
doc.add(new FloatField(name, (Float) value, isStored));
}
if (schema.isDocValues()) {
long docValuesBits = Float.floatToIntBits((Float) value);
doc.add(new NumericDocValuesField(name, docValuesBits));
}
break;
case STRING:
if (Strings.isNullOrEmpty(field.getValue())) {
break;
}
if (schema.isIndexed()) {
FieldType type = new FieldType();
type.setTokenized(schema.isTokenized());
type.setIndexed(schema.isIndexed());
type.setStored(schema.isStored());
type.setOmitNorms(schema.isOmitNorms());
if (schema.isSnippet()) {
type.setIndexOptions(FieldInfo.IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
// snippet will use the stored info.
type.setStored(true);
}
if (schema.isOmitFreqs()) {
type.setIndexOptions(FieldInfo.IndexOptions.DOCS_ONLY);
}
doc.add(new Field(name, field.getValue(), type));
}
if (schema.isDocValues()) {
BytesRef bytes = new BytesRef(field.getValue());
doc.add(new BinaryDocValuesField(name, bytes));
}
break;
case FACET:
String[] facetPath = field.getValue().split("/");
doc.add(new FacetField(name, facetPath));
if (schema.isIndexed()) {
doc.add(new StringField(name, field.getValue(), isStored));
}
if (schema.isDocValues()) {
doc.add(new BinaryDocValuesField(name, new BytesRef(field.getValue())));
}
break;
default:
}
}
if (lindenDoc.isSetCoordinate()) {
Coordinate coord = lindenDoc.getCoordinate();
Shape shape = SpatialContext.GEO.makePoint(coord.getLongitude(), coord.getLatitude());
for (IndexableField field : config.getSpatialStrategy().createIndexableFields(shape)) {
doc.add(field);
}
}
return doc;
}
Aggregations