SOLR-10761: Switch trie numeric/date fields to points in data-driven-enabled example and test schemas

This commit is contained in:
Steve Rowe 2017-06-09 19:43:01 -04:00
parent f434e34d5c
commit 566fcfce13
13 changed files with 126 additions and 50 deletions

View File

@ -389,6 +389,9 @@ Other Changes
* SOLR-10501: Test sortMissing{First,Last} with points fields. (Steve Rowe)
* SOLR-10761: Switch trie numeric/date fields to points in data-driven-enabled example and test schemas.
(Steve Rowe)
================== 6.6.0 ==================
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

View File

@ -92,31 +92,31 @@ import static org.apache.solr.core.ConfigSetProperties.IMMUTABLE_CONFIGSET_ARG;
* <str name="defaultFieldType">text_general</str>
* <lst name="typeMapping">
* <str name="valueClass">Boolean</str>
* <str name="fieldType">boolean</str>
* <str name="fieldType">booleans</str>
* </lst>
* <lst name="typeMapping">
* <str name="valueClass">Integer</str>
* <str name="fieldType">tint</str>
* <str name="fieldType">pints</str>
* </lst>
* <lst name="typeMapping">
* <str name="valueClass">Float</str>
* <str name="fieldType">tfloat</str>
* <str name="fieldType">pfloats</str>
* </lst>
* <lst name="typeMapping">
* <str name="valueClass">Date</str>
* <str name="fieldType">tdate</str>
* <str name="fieldType">pdates</str>
* </lst>
* <lst name="typeMapping">
* <str name="valueClass">Long</str>
* <str name="valueClass">Integer</str>
* <str name="fieldType">tlong</str>
* <str name="fieldType">plongs</str>
* </lst>
* <lst name="typeMapping">
* <arr name="valueClass">
* <str>Double</str>
* <str>Float</str>
* </arr>
* <str name="fieldType">tdouble</str>
* <str name="fieldType">pdoubles</str>
* </lst>
* &lt;/processor&gt;</pre>
*/

View File

@ -33,6 +33,17 @@
</analyzer>
</fieldType>
<fieldType name="pint" class="solr.IntPointField" docValues="true"/>
<fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/>
<fieldType name="plong" class="solr.LongPointField" docValues="true"/>
<fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/>
<fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/>
<fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/>
<fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/>
<fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/>
<fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
<fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="_root_" type="string" indexed="true" stored="true" multiValued="false"/>
@ -44,6 +55,17 @@
<dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
<dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
<dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
<dynamicField name="*_pis" type="pints" indexed="true" stored="true"/>
<dynamicField name="*_pl" type="plong" indexed="true" stored="true"/>
<dynamicField name="*_pls" type="plongs" indexed="true" stored="true"/>
<dynamicField name="*_pf" type="pfloat" indexed="true" stored="true"/>
<dynamicField name="*_pfs" type="pfloats" indexed="true" stored="true"/>
<dynamicField name="*_pd" type="pdouble" indexed="true" stored="true"/>
<dynamicField name="*_pds" type="pdoubles" indexed="true" stored="true"/>
<dynamicField name="*_pdt" type="pdate" indexed="true" stored="true"/>
<dynamicField name="*_pdts" type="pdates" indexed="true" stored="true"/>
<uniqueKey>id</uniqueKey>
</schema>

View File

@ -90,6 +90,7 @@
<fieldType name="highlittext" class="solr.TextField"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/>
<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<!-- format for date is 1995-12-31T23:59:59.999Z and only the fractional
@ -540,7 +541,25 @@
<filter class="solr.ManagedSynonymGraphFilterFactory" managed="germangraph"/>
</analyzer>
</fieldType>
<!--
Numeric field types that index values using KD-trees. *Point fields are faster and more efficient than Trie* fields both, at
search time and at index time, but some features are still not supported.
Point fields don't support FieldCache, so they must have docValues="true" if needed for sorting, faceting, functions, etc.
-->
<fieldType name="pint" class="solr.IntPointField" docValues="true"/>
<fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/>
<fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/>
<fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/>
<fieldType name="plong" class="solr.LongPointField" docValues="true"/>
<fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/>
<fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/>
<fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/>
<!-- KD-tree versions of date fields -->
<fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
<fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="signatureField" type="string" indexed="true" stored="false"/>
<field name="uuid" type="uuid" stored="true"/>
@ -681,6 +700,18 @@
<dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
<dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
<!-- KD-tree (point) numerics -->
<dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
<dynamicField name="*_pis" type="pints" indexed="true" stored="true"/>
<dynamicField name="*_pl" type="plong" indexed="true" stored="true"/>
<dynamicField name="*_pls" type="plongs" indexed="true" stored="true"/>
<dynamicField name="*_pf" type="pfloat" indexed="true" stored="true"/>
<dynamicField name="*_pfs" type="pfloats" indexed="true" stored="true"/>
<dynamicField name="*_pd" type="pdouble" indexed="true" stored="true"/>
<dynamicField name="*_pds" type="pdoubles" indexed="true" stored="true"/>
<dynamicField name="*_pdt" type="pdate" indexed="true" stored="true"/>
<dynamicField name="*_pdts" type="pdates" indexed="true" stored="true"/>
<dynamicField name="ignored_*" type="ignored" multiValued="true"/>
<dynamicField name="attr_*" type="text" indexed="true" stored="true" multiValued="true"/>

View File

@ -40,27 +40,27 @@
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tint</str>
<str name="fieldType">pints</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Float</str>
<str name="fieldType">tfloat</str>
<str name="fieldType">pfloats</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdate</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlong</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<arr name="valueClass">
<str>java.lang.Double</str>
<str>java.lang.Float</str>
</arr>
<str name="fieldType">tdouble</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>
</updateRequestProcessorChain>
@ -74,24 +74,24 @@
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tint</str>
<str name="fieldType">pints</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Float</str>
<str name="fieldType">tfloat</str>
<str name="fieldType">pfloats</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdate</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlong</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdouble</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
@ -132,24 +132,24 @@
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tint</str>
<str name="fieldType">pints</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Float</str>
<str name="fieldType">tfloat</str>
<str name="fieldType">pfloats</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdate</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlong</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdouble</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />

View File

@ -85,16 +85,16 @@
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdate</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlong</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdouble</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>
<processor class="solr.LogUpdateProcessorFactory"/>

View File

@ -77,11 +77,11 @@ public class TestFieldCollectionResource extends SolrRestletTestBase {
"/fields/[0]/name=='HTMLstandardtok'",
"/fields/[1]/name=='HTMLwhitetok'",
"/fields/[2]/name=='_version_'",
"/fields/[98]/name=='*_d'",
"/fields/[97]/name=='*_f'",
"/fields/[96]/name=='*_b'",
"/fields/[95]/name=='*_t'",
"/fields/[94]/name=='*_l'"
"/fields/[108]/name=='*_d'",
"/fields/[107]/name=='*_f'",
"/fields/[106]/name=='*_b'",
"/fields/[105]/name=='*_t'",
"/fields/[104]/name=='*_l'"
);
}

View File

@ -67,7 +67,7 @@ public class AddSchemaFieldsUpdateProcessorFactoryTest extends UpdateProcessorTe
assertNotNull(d);
schema = h.getCore().getLatestSchema();
assertNotNull(schema.getFieldOrNull(fieldName));
assertEquals("tdate", schema.getFieldType(fieldName).getTypeName());
assertEquals("pdates", schema.getFieldType(fieldName).getTypeName());
}
public void testSingleFieldRoundTrip() throws Exception {
@ -79,7 +79,7 @@ public class AddSchemaFieldsUpdateProcessorFactoryTest extends UpdateProcessorTe
assertNotNull(d);
schema = h.getCore().getLatestSchema();
assertNotNull(schema.getFieldOrNull(fieldName));
assertEquals("tfloat", schema.getFieldType(fieldName).getTypeName());
assertEquals("pfloats", schema.getFieldType(fieldName).getTypeName());
assertU(commit());
assertQ(req("id:2"), "//arr[@name='" + fieldName + "']/float[.='" + floatValue.toString() + "']");
}
@ -95,7 +95,7 @@ public class AddSchemaFieldsUpdateProcessorFactoryTest extends UpdateProcessorTe
assertNotNull(d);
schema = h.getCore().getLatestSchema();
assertNotNull(schema.getFieldOrNull(fieldName));
assertEquals("tdouble", schema.getFieldType(fieldName).getTypeName());
assertEquals("pdoubles", schema.getFieldType(fieldName).getTypeName());
assertU(commit());
assertQ(req("id:3")
,"//arr[@name='" + fieldName + "']/double[.='" + fieldValue1.toString() + "']"
@ -141,8 +141,8 @@ public class AddSchemaFieldsUpdateProcessorFactoryTest extends UpdateProcessorTe
schema = h.getCore().getLatestSchema();
assertNotNull(schema.getFieldOrNull(fieldName1));
assertNotNull(schema.getFieldOrNull(fieldName2));
assertEquals("tdouble", schema.getFieldType(fieldName1).getTypeName());
assertEquals("tlong", schema.getFieldType(fieldName2).getTypeName());
assertEquals("pdoubles", schema.getFieldType(fieldName1).getTypeName());
assertEquals("plongs", schema.getFieldType(fieldName2).getTypeName());
assertU(commit());
assertQ(req("id:5")
,"//arr[@name='" + fieldName1 + "']/double[.='" + field1Value1.toString() + "']"
@ -194,10 +194,10 @@ public class AddSchemaFieldsUpdateProcessorFactoryTest extends UpdateProcessorTe
assertNotNull(schema.getFieldOrNull(fieldName2));
assertNotNull(schema.getFieldOrNull(fieldName3));
assertNotNull(schema.getFieldOrNull(fieldName4));
assertEquals("tdouble", schema.getFieldType(fieldName1).getTypeName());
assertEquals("tlong", schema.getFieldType(fieldName2).getTypeName());
assertEquals("pdoubles", schema.getFieldType(fieldName1).getTypeName());
assertEquals("plongs", schema.getFieldType(fieldName2).getTypeName());
assertEquals("text", schema.getFieldType(fieldName3).getTypeName());
assertEquals("tdate", schema.getFieldType(fieldName4).getTypeName());
assertEquals("pdates", schema.getFieldType(fieldName4).getTypeName());
assertU(commit());
assertQ(req("id:6")
,"//arr[@name='" + fieldName1 + "']/double[.='" + field1Value1.toString() + "']"

View File

@ -47,6 +47,16 @@
<filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
</analyzer>
</fieldType>
<fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
<fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>
<fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/>
<fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/>
<fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/>
<fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/>
<fieldType name="pint" class="solr.IntPointField" docValues="true"/>
<fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/>
<fieldType name="plong" class="solr.LongPointField" docValues="true"/>
<fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/>
<fieldType name="point" class="solr.PointType" subFieldSuffix="_d" dimension="2"/>
<fieldType name="random" class="solr.RandomSortField" indexed="true"/>
<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
@ -493,6 +503,7 @@
<dynamicField name="*_srpt" type="location_rpt" indexed="true" stored="true"/>
<dynamicField name="*_tdts" type="tdates" indexed="true" stored="true"/>
<dynamicField name="attr_*" type="text_general" multiValued="true" indexed="true" stored="true"/>
<dynamicField name="*_pdts" type="pdates" indexed="true" stored="true"/>
<dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/>
<dynamicField name="*_dts" type="date" multiValued="true" indexed="true" stored="true"/>
<dynamicField name="*_tis" type="tints" indexed="true" stored="true"/>
@ -500,6 +511,11 @@
<dynamicField name="*_tfs" type="tfloats" indexed="true" stored="true"/>
<dynamicField name="*_tds" type="tdoubles" indexed="true" stored="true"/>
<dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
<dynamicField name="*_pds" type="pdoubles" indexed="true" stored="true"/>
<dynamicField name="*_pdt" type="pdate" indexed="true" stored="true"/>
<dynamicField name="*_pfs" type="pfloats" indexed="true" stored="true"/>
<dynamicField name="*_pis" type="pints" indexed="true" stored="true"/>
<dynamicField name="*_pls" type="plongs" indexed="true" stored="true"/>
<dynamicField name="*_is" type="ints" indexed="true" stored="true"/>
<dynamicField name="*_ss" type="strings" indexed="true" stored="true"/>
<dynamicField name="*_ls" type="longs" indexed="true" stored="true"/>
@ -512,6 +528,10 @@
<dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/>
<dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
<dynamicField name="*_ws" type="text_ws" indexed="true" stored="true"/>
<dynamicField name="*_pd" type="pdouble" indexed="true" stored="true"/>
<dynamicField name="*_pf" type="pfloat" indexed="true" stored="true"/>
<dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
<dynamicField name="*_pl" type="plong" indexed="true" stored="true"/>
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>

View File

@ -1229,16 +1229,16 @@
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdates</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlongs</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdoubles</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>

View File

@ -1223,16 +1223,16 @@
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdates</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlongs</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdoubles</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>

View File

@ -1222,16 +1222,16 @@
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdates</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlongs</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdoubles</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>
<processor class="solr.LogUpdateProcessorFactory"/>

View File

@ -139,16 +139,16 @@ The UpdateRequestProcessorChain allows Solr to guess field types, and you can de
</lst>
<lst name="typeMapping">
<str name="valueClass">java.util.Date</str>
<str name="fieldType">tdates</str>
<str name="fieldType">pdates</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Long</str>
<str name="valueClass">java.lang.Integer</str>
<str name="fieldType">tlongs</str>
<str name="fieldType">plongs</str>
</lst>
<lst name="typeMapping">
<str name="valueClass">java.lang.Number</str>
<str name="fieldType">tdoubles</str>
<str name="fieldType">pdoubles</str>
</lst>
</processor>
<processor class="solr.LogUpdateProcessorFactory"/>