diff options
author | Tyler Schicke <tyler_schicke@brown.edu> | 2019-05-07 21:57:48 -0400 |
---|---|---|
committer | Tyler Schicke <tyler_schicke@brown.edu> | 2019-05-07 21:57:48 -0400 |
commit | 85d8e29c15b45cd83d258f185d3d55ff400a145e (patch) | |
tree | 5ba6a1c24abd990d650c9dd64f7786f8a30fef5e | |
parent | 19bca65d863d1f40bd663f0aa5ed61ad92b6a764 (diff) |
Added date support
-rw-r--r-- | solr/conf/schema.xml | 1 | ||||
-rw-r--r-- | solr/conf/solrconfig.xml | 2 | ||||
-rw-r--r-- | src/server/index.ts | 24 |
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 }; |