aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-05-07 21:57:48 -0400
committerTyler Schicke <tyler_schicke@brown.edu>2019-05-07 21:57:48 -0400
commit85d8e29c15b45cd83d258f185d3d55ff400a145e (patch)
tree5ba6a1c24abd990d650c9dd64f7786f8a30fef5e
parent19bca65d863d1f40bd663f0aa5ed61ad92b6a764 (diff)
Added date support
-rw-r--r--solr/conf/schema.xml1
-rw-r--r--solr/conf/solrconfig.xml2
-rw-r--r--src/server/index.ts24
3 files changed, 22 insertions, 5 deletions
diff --git a/solr/conf/schema.xml b/solr/conf/schema.xml
index 99087a1db..3d1ccb698 100644
--- a/solr/conf/schema.xml
+++ b/solr/conf/schema.xml
@@ -46,6 +46,7 @@
<dynamicField name="*_t" type="text" indexed="true" stored="true" uninvertible="false"/>
<dynamicField name="*_n" type="pdouble" indexed="true" stored="true" uninvertible="false"/>
+ <dynamicField name="*_d" type="pdate" indexed="true" stored="true" uninvertible="false"/>
<dynamicField name="*_a" type="text" indexed="true" stored="false" uninvertible="false"/>
diff --git a/solr/conf/solrconfig.xml b/solr/conf/solrconfig.xml
index 981500022..90eff5363 100644
--- a/solr/conf/solrconfig.xml
+++ b/solr/conf/solrconfig.xml
@@ -696,7 +696,7 @@
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
- <str name="df">data</str>
+ <str name="df">text</str>
<!-- Default search field
<str name="df">text</str>
-->
diff --git a/src/server/index.ts b/src/server/index.ts
index 44251de3d..5023bf717 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -296,10 +296,17 @@ function GetRefFields([ids, callback]: [string[], (result?: Transferable[]) => v
}
-const suffixMap: { [type: string]: string } = {
+const suffixMap: { [type: string]: string | [string, string] | [string, string, (json: any) => any] } = {
"number": "_n",
- "string": "_t"
+ "string": "_t",
+ "image": ["_t", "url"],
+ "video": ["_t", "url"],
+ "pdf": ["_t", "url"],
+ "audio": ["_t", "url"],
+ "web": ["_t", "url"],
+ "date": ["_d", "date", millis => new Date(millis).toISOString()],
};
+
function UpdateField(socket: Socket, diff: Diff) {
Database.Instance.update(diff.id, diff.diff,
() => socket.broadcast.emit(MessageStore.UpdateField.Message, diff), false, "newDocuments");
@@ -311,9 +318,18 @@ function UpdateField(socket: Socket, diff: Diff) {
let dynfield = false;
for (let key in docfield) {
if (!key.startsWith("fields.")) continue;
- const val = docfield[key];
- const suffix = suffixMap[typeof val];
+ let val = docfield[key];
+ const type = val.__type || typeof val;
+ let suffix = suffixMap[type];
if (suffix !== undefined) {
+ if (Array.isArray(suffix)) {
+ val = val[suffix[1]];
+ const func = suffix[2];
+ if (func) {
+ val = func(val);
+ }
+ suffix = suffix[0];
+ }
key = key.substring(7);
Object.values(suffixMap).forEach(suf => update[key + suf] = null);
update[key + suffix] = { set: val };