Skip to content

Commit 48525cc

Browse files
committed
Pull request #1453: Index more owner data
Merge in CATS/clowder from index-more-owner-data to develop * commit 'bc8c40aac0ab98cb97885d050f3e2d40463308d8': CHANGELOG updated. CHANGELOG updated. CHANGELOG updated. fix syntax help label support email field search add name and email to index
2 parents dee776c + bc8c40a commit 48525cc

File tree

6 files changed

+45
-3
lines changed

6 files changed

+45
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
55
and this project adheres to [Semantic Versioning](http://semver.org/).
66

77
## Unreleased
8+
**_Warning:_ This update modifies how information is stored in Elasticsearch for text based searching. To take advantage
9+
of these changes a reindex of Elasticsearch is required. This can be started by an admin either from GUI or through the API.**
10+
811
### Added
912
- Added ability to delete extractor, both from api and GUI.
1013
[CATS-1044](https://opensource.ncsa.illinois.edu/jira/browse/CATS-1044)
1114
- API add tags endpoint now returns the added tags.
1215
[CATS-1053](https://opensource.ncsa.illinois.edu/jira/browse/CATS-1053)
16+
- Ability to search by creator name and email address for all resources.
1317

1418
### Fixed
1519
- Ability to delete tags on file page.

app/models/ElasticSearchObject.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ case class ElasticsearchObject (
1111
resource: ResourceRef,
1212
name: String,
1313
creator: String,
14+
/*
15+
TODO
16+
Do we still need the creator_id?
17+
Do we need these in separate fields, or just include name & email under creator?
18+
Should email addresses be handled in a separate way?
19+
*/
20+
creator_name: String,
21+
creator_email: String,
1422
created: Date,
1523
created_as: String = "",
1624
parent_of: List[String] = List.empty,
@@ -39,6 +47,8 @@ object ElasticsearchObject {
3947
"resource" -> JsString(eso.resource.toString),
4048
"name" -> JsString(eso.name),
4149
"creator" -> JsString(eso.creator),
50+
"creator_name" -> JsString(eso.creator_name),
51+
"creator_email" -> JsString(eso.creator_email),
4252
"created" -> JsString(eso.created.toString),
4353
"created_as" -> JsString(eso.created_as.toString),
4454
"parent_of" -> JsArray(eso.parent_of.toSeq.map( (p:String) => Json.toJson(p)): Seq[JsValue]),
@@ -60,6 +70,8 @@ object ElasticsearchObject {
6070
(json \ "resource").as[ResourceRef],
6171
(json \ "name").as[String],
6272
(json \ "creator").as[String],
73+
(json \ "creator_name").as[String],
74+
(json \ "creator_email").as[String],
6375
(json \ "created").as[Date],
6476
(json \ "created_as").as[String],
6577
(json \ "parent_of").as[List[String]],

app/services/ElasticsearchPlugin.scala

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,10 @@ class ElasticsearchPlugin(application: Application) extends Plugin {
301301
.startObject("default")
302302
.field("type", "standard")
303303
.endObject()
304+
.startObject("email_analyzer")
305+
.field("type", "custom")
306+
.field("tokenizer", "uax_url_email")
307+
.endObject()
304308
.endObject()
305309
.endObject()
306310
.startObject("index")
@@ -476,6 +480,8 @@ class ElasticsearchPlugin(application: Application) extends Plugin {
476480
.startObject()
477481
// BASIC INFO
478482
.field("creator", eso.creator)
483+
.field("creator_name", eso.creator_name)
484+
.field("creator_email", eso.creator_email)
479485
.field("created", eso.created)
480486
.field("created_as", eso.created_as)
481487
.field("resource_type", eso.resource.resourceType.name)
@@ -719,6 +725,8 @@ class ElasticsearchPlugin(application: Application) extends Plugin {
719725
|"child_of": {"type": "string", "include_in_all": false},
720726
|"parent_of": {"type": "string", "include_in_all": false},
721727
|"creator": {"type": "string", "include_in_all": false},
728+
|"creator_name": {"type": "string"},
729+
|"creator_email": {"type": "string", "search_analyzer": "email_analyzer", "analyzer": "email_analyzer"},
722730
|"created_as": {"type": "string"},
723731
|"created": {"type": "date", "format": "dateOptionalTime", "include_in_all": false},
724732
|"metadata": {"type": "object"},
@@ -852,7 +860,7 @@ class ElasticsearchPlugin(application: Application) extends Plugin {
852860
}
853861

854862
// If a term is specified that isn't in this list, it's assumed to be a metadata field
855-
val official_terms = List("name", "creator", "resource_type", "in", "contains", "tag")
863+
val official_terms = List("name", "creator", "email", "resource_type", "in", "contains", "tag")
856864

857865
// Create list of "key:value" terms for parsing by builder
858866
val terms = ListBuffer[String]()
@@ -867,6 +875,10 @@ class ElasticsearchPlugin(application: Application) extends Plugin {
867875
currterm += "child_of:"
868876
else if (mt == "contains")
869877
currterm += "parent_of:"
878+
else if (mt == "creator")
879+
currterm += "creator_name:"
880+
else if (mt == "email")
881+
currterm += "creator_email:"
870882
else if (!official_terms.contains(mt))
871883
currterm += "metadata."+mt+":"
872884
else

app/util/SearchUtils.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ object SearchUtils {
9797
ResourceRef(ResourceRef.file, id),
9898
f.filename,
9999
f.author.id.toString,
100+
f.author.fullName.toString,
101+
f.author.email.getOrElse("").toString,
100102
f.uploadDate,
101103
f.originalname,
102104
List.empty,
@@ -168,6 +170,8 @@ object SearchUtils {
168170
ResourceRef(ResourceRef.dataset, id),
169171
ds.name,
170172
ds.author.id.toString,
173+
ds.author.fullName.toString,
174+
ds.author.email.getOrElse("").toString,
171175
ds.created,
172176
"",
173177
parent_of_distinct,
@@ -196,6 +200,8 @@ object SearchUtils {
196200
ResourceRef(ResourceRef.collection, c.id),
197201
c.name,
198202
c.author.id.toString,
203+
c.author.fullName.toString,
204+
c.author.email.getOrElse("").toString,
199205
c.created,
200206
"",
201207
parent_of,
@@ -252,6 +258,8 @@ object SearchUtils {
252258
ResourceRef(ResourceRef.section, id),
253259
"section-"+id.toString,
254260
"",
261+
"",
262+
"",
255263
new Date,
256264
"",
257265
List.empty,
@@ -269,6 +277,8 @@ object SearchUtils {
269277
ResourceRef(ResourceRef.file, file.id),
270278
file.filename,
271279
"",
280+
"",
281+
"",
272282
file.uploadDate,
273283
"",
274284
List.empty,

app/views/searchResults.scala.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,11 @@ <h1>Search</h1>
5050
<td>name:VIS_SV_180_z1_1207272.png</td>
5151
<td>@Messages("help.search.name", Messages("dataset.title").toLowerCase, Messages("collection.title").toLowerCase)</td></tr>
5252
<tr><td>creator</td>
53-
<td>creator:5a8c4bd574d559ca9b46ef58</td>
53+
<td>creator:Smith</td>
5454
<td>@Messages("help.search.creator")</td></tr>
55+
<tr><td>email</td>
56+
<td>email:janesmith@@email.com</td>
57+
<td>@Messages("help.search.email")</td></tr>
5558
<tr><td>resource_type</td>
5659
<td>resource_type:collection</td>
5760
<td>@Messages("help.search.resource_type", Messages("dataset.title").toLowerCase, Messages("collection.title").toLowerCase)</td></tr>

conf/messages

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ help.search.col2=example
7070
help.search.allfields=name, description, creator name, and tag
7171
help.search.regex1=get anything with "trees" or "streetcars" in basic fields
7272
help.search.name=searches file, {0} or {1} names
73-
help.search.creator=creator ID can be found in their profile URL
73+
help.search.creator=creator name
74+
help.search.email=creator email address
7475
help.search.resource_type=can be file, {0} or {1}
7576
help.search.tag=filter search results by specific tags
7677
help.search.in=a {0} or {1} ID can be specified

0 commit comments

Comments
 (0)