@internetarchive/collection-browser 2.8.1-alpha-webdev7002.1 → 2.8.1-alpha-webdev7002.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,41 +1,52 @@
1
+ const TEXTS = { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] };
2
+ const AUDIO = { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] };
3
+ const MOVIES = { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] };
4
+ const IMAGE = { facets: [{ facetType: 'mediatype', bucketKey: 'image' }] };
5
+ const SOFTWARE = { facets: [{ facetType: 'mediatype', bucketKey: 'software' }] };
6
+ const ETREE = { facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] };
7
+ const WEB = { facets: [{ facetType: 'mediatype', bucketKey: 'web' }] };
8
+ const DATA = { facets: [{ facetType: 'mediatype', bucketKey: 'data' }] };
1
9
  /**
2
10
  * Map from keywords found in the search query to an array of
3
11
  * likely-relevant "smart facets" for those keywords.
4
12
  */
5
13
  export const QUERY_KEYWORDS = {
6
- text: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
7
- book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
8
- novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
9
- magazine: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
10
- newspaper: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
11
- pdf: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
12
- epub: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
13
- audio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
14
- song: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
15
- music: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
16
- listen: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
17
- podcast: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
18
- radio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
19
- stream: [
20
- { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] },
21
- { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] },
22
- ],
23
- video: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
24
- movie: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
25
- film: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
26
- animation: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
27
- youtube: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
28
- image: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
29
- photo: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
30
- picture: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
31
- painting: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
32
- software: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
33
- app: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
34
- program: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
35
- game: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
36
- etree: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
37
- concert: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
38
- 'live music': [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
39
- dataset: [{ facets: [{ facetType: 'mediatype', bucketKey: 'data' }] }],
14
+ text: [TEXTS],
15
+ book: [TEXTS],
16
+ novel: [TEXTS],
17
+ magazine: [TEXTS],
18
+ newspaper: [TEXTS],
19
+ pdf: [TEXTS],
20
+ epub: [TEXTS],
21
+ audio: [AUDIO],
22
+ song: [AUDIO],
23
+ music: [AUDIO],
24
+ listen: [AUDIO],
25
+ podcast: [AUDIO],
26
+ radio: [AUDIO],
27
+ stream: [AUDIO, MOVIES],
28
+ video: [MOVIES],
29
+ movie: [MOVIES],
30
+ film: [MOVIES],
31
+ animation: [MOVIES],
32
+ youtube: [MOVIES],
33
+ image: [IMAGE],
34
+ photo: [IMAGE],
35
+ picture: [IMAGE],
36
+ painting: [IMAGE],
37
+ jpg: [IMAGE],
38
+ jpeg: [IMAGE],
39
+ png: [IMAGE],
40
+ gif: [IMAGE],
41
+ software: [SOFTWARE],
42
+ app: [SOFTWARE],
43
+ program: [SOFTWARE],
44
+ game: [SOFTWARE],
45
+ arcade: [SOFTWARE],
46
+ etree: [ETREE],
47
+ concert: [ETREE],
48
+ 'live music': [ETREE],
49
+ 'web crawl': [WEB],
50
+ dataset: [DATA],
40
51
  };
41
52
  //# sourceMappingURL=query-keywords-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-keywords-map.js","sourceRoot":"","sources":["../../../../../../src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeywordFacetMap } from '../../models';\n\n/**\n * Map from keywords found in the search query to an array of\n * likely-relevant \"smart facets\" for those keywords.\n */\nexport const QUERY_KEYWORDS: Readonly<KeywordFacetMap> = {\n text: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n magazine: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n newspaper: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n pdf: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n epub: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n audio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n song: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n music: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n listen: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n podcast: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n radio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],\n stream: [\n { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] },\n { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] },\n ],\n video: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n movie: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n film: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n animation: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n youtube: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],\n image: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],\n photo: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],\n picture: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],\n painting: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],\n software: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n app: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n program: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n game: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],\n etree: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],\n concert: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],\n 'live music': [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],\n dataset: [{ facets: [{ facetType: 'mediatype', bucketKey: 'data' }] }],\n};\n"]}
1
+ {"version":3,"file":"query-keywords-map.js","sourceRoot":"","sources":["../../../../../../src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACvF,MAAM,KAAK,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACvF,MAAM,MAAM,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzF,MAAM,KAAK,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACvF,MAAM,QAAQ,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAC7F,MAAM,KAAK,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACvF,MAAM,GAAG,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACnF,MAAM,IAAI,GAAe,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAErF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,KAAK,EAAE,CAAC,KAAK,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,KAAK,EAAE,CAAC,KAAK,CAAC;IACd,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,KAAK,EAAE,CAAC,KAAK,CAAC;IACd,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,KAAK,EAAE,CAAC,KAAK,CAAC;IACd,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,KAAK,CAAC;IACd,KAAK,EAAE,CAAC,KAAK,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,IAAI,EAAE,CAAC,KAAK,CAAC;IACb,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpB,GAAG,EAAE,CAAC,QAAQ,CAAC;IACf,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,IAAI,EAAE,CAAC,QAAQ,CAAC;IAChB,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,KAAK,EAAE,CAAC,KAAK,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,YAAY,EAAE,CAAC,KAAK,CAAC;IACrB,WAAW,EAAE,CAAC,GAAG,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,CAAC;CAChB,CAAC","sourcesContent":["import type { KeywordFacetMap, SmartFacet } from '../../models';\n\nconst TEXTS: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] };\nconst AUDIO: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] };\nconst MOVIES: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] };\nconst IMAGE: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'image' }] };\nconst SOFTWARE: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'software' }] };\nconst ETREE: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] };\nconst WEB: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'web' }] };\nconst DATA: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'data' }] };\n\n/**\n * Map from keywords found in the search query to an array of\n * likely-relevant \"smart facets\" for those keywords.\n */\nexport const QUERY_KEYWORDS: Readonly<KeywordFacetMap> = {\n text: [TEXTS],\n book: [TEXTS],\n novel: [TEXTS],\n magazine: [TEXTS],\n newspaper: [TEXTS],\n pdf: [TEXTS],\n epub: [TEXTS],\n audio: [AUDIO],\n song: [AUDIO],\n music: [AUDIO],\n listen: [AUDIO],\n podcast: [AUDIO],\n radio: [AUDIO],\n stream: [AUDIO, MOVIES],\n video: [MOVIES],\n movie: [MOVIES],\n film: [MOVIES],\n animation: [MOVIES],\n youtube: [MOVIES],\n image: [IMAGE],\n photo: [IMAGE],\n picture: [IMAGE],\n painting: [IMAGE],\n jpg: [IMAGE],\n jpeg: [IMAGE],\n png: [IMAGE],\n gif: [IMAGE],\n software: [SOFTWARE],\n app: [SOFTWARE],\n program: [SOFTWARE],\n game: [SOFTWARE],\n arcade: [SOFTWARE],\n etree: [ETREE],\n concert: [ETREE],\n 'live music': [ETREE],\n 'web crawl': [WEB],\n dataset: [DATA],\n};\n"]}
@@ -1,3 +1,42 @@
1
+ const WRITTEN_WORK_SMART_FACETS = [
2
+ { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
3
+ ];
4
+ const FILMMAKER_SMART_FACETS = [
5
+ {
6
+ label: 'Films by __QUERY',
7
+ facets: [
8
+ { facetType: 'mediatype', bucketKey: 'movies' },
9
+ { facetType: 'creator', bucketKey: '__QUERY' },
10
+ ],
11
+ },
12
+ ];
13
+ const AUTHOR_SMART_FACETS = [
14
+ {
15
+ label: 'Writing by __QUERY',
16
+ facets: [
17
+ { facetType: 'mediatype', bucketKey: 'texts' },
18
+ { facetType: 'creator', bucketKey: '__QUERY' },
19
+ ],
20
+ },
21
+ ];
22
+ const VISUAL_ARTIST_SMART_FACETS = [
23
+ {
24
+ label: 'Images by __QUERY',
25
+ facets: [
26
+ { facetType: 'mediatype', bucketKey: 'image' },
27
+ { facetType: 'creator', bucketKey: '__QUERY' },
28
+ ],
29
+ },
30
+ ];
31
+ const MUSICIAN_SMART_FACETS = [
32
+ {
33
+ label: 'Music by __QUERY',
34
+ facets: [
35
+ { facetType: 'mediatype', bucketKey: 'audio' },
36
+ { facetType: 'creator', bucketKey: '__QUERY' },
37
+ ],
38
+ },
39
+ ];
1
40
  /**
2
41
  * Map from Wikidata description keywords for a given entity to a
3
42
  * set of likely-relevant "smart facets" for that query.
@@ -6,128 +45,25 @@
6
45
  * queried entity when generating facet values.
7
46
  */
8
47
  export const WIKIDATA_ENTITIES = {
9
- 'written work': [
10
- { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
11
- ],
12
- literature: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
13
- book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
14
- novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
15
- filmmaker: [
16
- {
17
- label: 'Films by __QUERY',
18
- facets: [
19
- { facetType: 'mediatype', bucketKey: 'movies' },
20
- { facetType: 'creator', bucketKey: '__QUERY' },
21
- ],
22
- },
23
- ],
24
- author: [
25
- {
26
- label: 'Writing by __QUERY',
27
- facets: [
28
- { facetType: 'mediatype', bucketKey: 'texts' },
29
- { facetType: 'creator', bucketKey: '__QUERY' },
30
- ],
31
- },
32
- ],
33
- writer: [
34
- {
35
- label: 'Writing by __QUERY',
36
- facets: [
37
- { facetType: 'mediatype', bucketKey: 'texts' },
38
- { facetType: 'creator', bucketKey: '__QUERY' },
39
- ],
40
- },
41
- ],
42
- poet: [
43
- {
44
- label: 'Writing by __QUERY',
45
- facets: [
46
- { facetType: 'mediatype', bucketKey: 'texts' },
47
- { facetType: 'creator', bucketKey: '__QUERY' },
48
- ],
49
- },
50
- ],
51
- photographer: [
52
- {
53
- label: 'Images by __QUERY',
54
- facets: [
55
- { facetType: 'mediatype', bucketKey: 'image' },
56
- { facetType: 'creator', bucketKey: '__QUERY' },
57
- ],
58
- },
59
- ],
60
- painter: [
61
- {
62
- label: 'Images by __QUERY',
63
- facets: [
64
- { facetType: 'mediatype', bucketKey: 'image' },
65
- { facetType: 'creator', bucketKey: '__QUERY' },
66
- ],
67
- },
68
- ],
69
- 'visual artist': [
70
- {
71
- label: 'Images by __QUERY',
72
- facets: [
73
- { facetType: 'mediatype', bucketKey: 'image' },
74
- { facetType: 'creator', bucketKey: '__QUERY' },
75
- ],
76
- },
77
- ],
78
- 'graphic artist': [
79
- {
80
- label: 'Images by __QUERY',
81
- facets: [
82
- { facetType: 'mediatype', bucketKey: 'image' },
83
- { facetType: 'creator', bucketKey: '__QUERY' },
84
- ],
85
- },
86
- ],
87
- singer: [
88
- {
89
- label: 'Music by __QUERY',
90
- facets: [
91
- { facetType: 'mediatype', bucketKey: 'audio' },
92
- { facetType: 'creator', bucketKey: '__QUERY' },
93
- ],
94
- },
95
- ],
96
- songwriter: [
97
- {
98
- label: 'Music by __QUERY',
99
- facets: [
100
- { facetType: 'mediatype', bucketKey: 'audio' },
101
- { facetType: 'creator', bucketKey: '__QUERY' },
102
- ],
103
- },
104
- ],
105
- musician: [
106
- {
107
- label: 'Music by __QUERY',
108
- facets: [
109
- { facetType: 'mediatype', bucketKey: 'audio' },
110
- { facetType: 'creator', bucketKey: '__QUERY' },
111
- ],
112
- },
113
- ],
114
- composer: [
115
- {
116
- label: 'Music by __QUERY',
117
- facets: [
118
- { facetType: 'mediatype', bucketKey: 'audio' },
119
- { facetType: 'creator', bucketKey: '__QUERY' },
120
- ],
121
- },
122
- ],
123
- pianist: [
124
- {
125
- label: 'Music by __QUERY',
126
- facets: [
127
- { facetType: 'mediatype', bucketKey: 'audio' },
128
- { facetType: 'creator', bucketKey: '__QUERY' },
129
- ],
130
- },
131
- ],
48
+ 'written work': WRITTEN_WORK_SMART_FACETS,
49
+ literature: WRITTEN_WORK_SMART_FACETS,
50
+ book: WRITTEN_WORK_SMART_FACETS,
51
+ novel: WRITTEN_WORK_SMART_FACETS,
52
+ filmmaker: FILMMAKER_SMART_FACETS,
53
+ director: FILMMAKER_SMART_FACETS,
54
+ author: AUTHOR_SMART_FACETS,
55
+ writer: AUTHOR_SMART_FACETS,
56
+ novelist: AUTHOR_SMART_FACETS,
57
+ essayist: AUTHOR_SMART_FACETS,
58
+ poet: AUTHOR_SMART_FACETS,
59
+ 'visual artist': VISUAL_ARTIST_SMART_FACETS,
60
+ 'graphic artist': VISUAL_ARTIST_SMART_FACETS,
61
+ photographer: VISUAL_ARTIST_SMART_FACETS,
62
+ painter: VISUAL_ARTIST_SMART_FACETS,
63
+ singer: MUSICIAN_SMART_FACETS,
64
+ songwriter: MUSICIAN_SMART_FACETS,
65
+ musician: MUSICIAN_SMART_FACETS,
66
+ composer: MUSICIAN_SMART_FACETS,
67
+ pianist: MUSICIAN_SMART_FACETS,
132
68
  };
133
69
  //# sourceMappingURL=wikidata-entity-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wikidata-entity-map.js","sourceRoot":"","sources":["../../../../../../src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeywordFacetMap } from '../../models';\n\n/**\n * Map from Wikidata description keywords for a given entity to a\n * set of likely-relevant \"smart facets\" for that query.\n *\n * The placeholder string \"__QUERY\" should be substituted for the actual\n * queried entity when generating facet values.\n */\nexport const WIKIDATA_ENTITIES: Readonly<KeywordFacetMap> = {\n 'written work': [\n { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },\n ],\n literature: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],\n filmmaker: [\n {\n label: 'Films by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'movies' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n author: [\n {\n label: 'Writing by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'texts' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n writer: [\n {\n label: 'Writing by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'texts' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n poet: [\n {\n label: 'Writing by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'texts' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n photographer: [\n {\n label: 'Images by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'image' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n painter: [\n {\n label: 'Images by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'image' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n 'visual artist': [\n {\n label: 'Images by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'image' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n 'graphic artist': [\n {\n label: 'Images by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'image' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n singer: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n songwriter: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n musician: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n composer: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n pianist: [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n ],\n};\n"]}
1
+ {"version":3,"file":"wikidata-entity-map.js","sourceRoot":"","sources":["../../../../../../src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts"],"names":[],"mappings":"AAEA,MAAM,yBAAyB,GAAiB;IAC9C,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;CAC7D,CAAC;AAEF,MAAM,sBAAsB,GAAiB;IAC3C;QACE,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE;YACN,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC/C,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;SAC/C;KACF;CACF,CAAC;AAEF,MAAM,mBAAmB,GAAiB;IACxC;QACE,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE;YACN,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE;YAC9C,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;SAC/C;KACF;CACF,CAAC;AAEF,MAAM,0BAA0B,GAAiB;IAC/C;QACE,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE;YACN,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE;YAC9C,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;SAC/C;KACF;CACF,CAAC;AAEF,MAAM,qBAAqB,GAAiB;IAC1C;QACE,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE;YACN,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE;YAC9C,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;SAC/C;KACF;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC1D,cAAc,EAAE,yBAAyB;IACzC,UAAU,EAAE,yBAAyB;IACrC,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,yBAAyB;IAEhC,SAAS,EAAE,sBAAsB;IACjC,QAAQ,EAAE,sBAAsB;IAEhC,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,mBAAmB;IAC7B,IAAI,EAAE,mBAAmB;IAEzB,eAAe,EAAE,0BAA0B;IAC3C,gBAAgB,EAAE,0BAA0B;IAC5C,YAAY,EAAE,0BAA0B;IACxC,OAAO,EAAE,0BAA0B;IAEnC,MAAM,EAAE,qBAAqB;IAC7B,UAAU,EAAE,qBAAqB;IACjC,QAAQ,EAAE,qBAAqB;IAC/B,QAAQ,EAAE,qBAAqB;IAC/B,OAAO,EAAE,qBAAqB;CAC/B,CAAC","sourcesContent":["import type { KeywordFacetMap, SmartFacet } from '../../models';\n\nconst WRITTEN_WORK_SMART_FACETS: SmartFacet[] = [\n { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },\n];\n\nconst FILMMAKER_SMART_FACETS: SmartFacet[] = [\n {\n label: 'Films by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'movies' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n];\n\nconst AUTHOR_SMART_FACETS: SmartFacet[] = [\n {\n label: 'Writing by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'texts' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n];\n\nconst VISUAL_ARTIST_SMART_FACETS: SmartFacet[] = [\n {\n label: 'Images by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'image' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n];\n\nconst MUSICIAN_SMART_FACETS: SmartFacet[] = [\n {\n label: 'Music by __QUERY',\n facets: [\n { facetType: 'mediatype', bucketKey: 'audio' },\n { facetType: 'creator', bucketKey: '__QUERY' },\n ],\n },\n];\n\n/**\n * Map from Wikidata description keywords for a given entity to a\n * set of likely-relevant \"smart facets\" for that query.\n *\n * The placeholder string \"__QUERY\" should be substituted for the actual\n * queried entity when generating facet values.\n */\nexport const WIKIDATA_ENTITIES: Readonly<KeywordFacetMap> = {\n 'written work': WRITTEN_WORK_SMART_FACETS,\n literature: WRITTEN_WORK_SMART_FACETS,\n book: WRITTEN_WORK_SMART_FACETS,\n novel: WRITTEN_WORK_SMART_FACETS,\n\n filmmaker: FILMMAKER_SMART_FACETS,\n director: FILMMAKER_SMART_FACETS,\n\n author: AUTHOR_SMART_FACETS,\n writer: AUTHOR_SMART_FACETS,\n novelist: AUTHOR_SMART_FACETS,\n essayist: AUTHOR_SMART_FACETS,\n poet: AUTHOR_SMART_FACETS,\n\n 'visual artist': VISUAL_ARTIST_SMART_FACETS,\n 'graphic artist': VISUAL_ARTIST_SMART_FACETS,\n photographer: VISUAL_ARTIST_SMART_FACETS,\n painter: VISUAL_ARTIST_SMART_FACETS,\n\n singer: MUSICIAN_SMART_FACETS,\n songwriter: MUSICIAN_SMART_FACETS,\n musician: MUSICIAN_SMART_FACETS,\n composer: MUSICIAN_SMART_FACETS,\n pianist: MUSICIAN_SMART_FACETS,\n};\n"]}
@@ -52,22 +52,29 @@ export class WikidataHeuristic {
52
52
  * @inheritdoc
53
53
  */
54
54
  async getRecommendedFacets(query) {
55
- var _a;
55
+ var _a, _b, _c;
56
56
  const recommendations = [];
57
57
  try {
58
58
  const wikidataURL = this.getWikidataURL(query);
59
59
  const wikidataResponse = await fetch(wikidataURL);
60
60
  const searchResults = await wikidataResponse.json();
61
+ console.log('wikidata results', searchResults);
61
62
  for (const [keyword, facets] of Object.entries(WIKIDATA_ENTITIES)) {
63
+ console.log('testing keyword', keyword);
62
64
  const keywordRegex = new RegExp(`\\b${keyword}\\b`);
63
- if (keywordRegex.test((_a = searchResults.search[0]) === null || _a === void 0 ? void 0 : _a.description)) {
65
+ console.log('regex', keywordRegex);
66
+ console.log('description', (_a = searchResults.search[0]) === null || _a === void 0 ? void 0 : _a.description);
67
+ console.log('test', keywordRegex.test((_b = searchResults.search[0]) === null || _b === void 0 ? void 0 : _b.description));
68
+ if (keywordRegex.test((_c = searchResults.search[0]) === null || _c === void 0 ? void 0 : _c.description)) {
64
69
  const entityName = searchResults.search[0].label;
65
70
  recommendations.push(...this.replaceQueryPlaceholders(facets, entityName));
66
71
  }
72
+ console.log('recs', recommendations);
67
73
  }
68
74
  return recommendations;
69
75
  }
70
76
  catch (err) {
77
+ console.warn(err);
71
78
  return [];
72
79
  }
73
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wikidata-heuristic.js","sourceRoot":"","sources":["../../../../../../src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,4EAA4E;AAC5E,mBAAmB;AACnB,0BAA0B;AAC1B,2BAA2B;AAC3B,8CAA8C;AAC9C,+CAA+C;AAC/C,8CAA8C;AAC9C,8CAA8C;AAC9C,OAAO;AACP,MAAM,OAAO,iBAAiB;IAA9B;QACmB,sBAAiB,GAAG,oCAAoC,CAAC;QAEzD,0BAAqB,GACpC,wFAAwF,CAAC;IAwE7F,CAAC;IAtEC;;;OAGG;IACK,cAAc,CAAC,KAAa;QAClC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,WAAW,QAAQ,EAAE,CAAC;IACrF,CAAC;IAED;;;;;OAKG;IACK,wBAAwB,CAC9B,WAAyB,EACzB,KAAa;QAEb,OAAO,WAAW,CAAC,GAAG,CACpB,UAAU,CAAC,EAAE;;YACX,OAAA,CAAC;gBACC,oDAAoD;gBACpD,KAAK,EAAE,MAAA,UAAU,CAAC,KAAK,0CAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;gBAClD,6EAA6E;gBAC7E,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;;oBACpC,MAAM,QAAQ,GAAG;wBACf,GAAG,KAAK;wBACR,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;qBACrD,CAAC;oBAEF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACtB,QAAQ,CAAC,WAAW,GAAG,MAAA,QAAQ,CAAC,WAAW,0CAAE,OAAO,CAClD,SAAS,EACT,KAAK,CACN,CAAC;oBACJ,CAAC;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC,CAAC;aACH,CAAe,CAAA;SAAA,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAAa;;QACtC,MAAM,eAAe,GAAiB,EAAE,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAEpD,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAClE,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;gBACpD,IAAI,YAAY,CAAC,IAAI,CAAC,MAAA,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,0CAAE,WAAW,CAAC,EAAE,CAAC;oBAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBACjD,eAAe,CAAC,IAAI,CAClB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC,CACrD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,eAAe,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF","sourcesContent":["import type { SmartQueryHeuristic, SmartFacet } from '../../models';\nimport { WIKIDATA_ENTITIES } from './wikidata-entity-map';\n\n// If wikidata describes the top query result as X, recommend facet Y, e.g.:\n// X Y\n// written work mt:texts\n// film mt:movies\n// author mt:texts and creator:<query>\n// filmmaker mt:movies and creator:<query>\n// photographer mt:image and creator:<query>\n// visual artist mt:image and creator:<query>\n// etc.\nexport class WikidataHeuristic implements SmartQueryHeuristic {\n private readonly WIKIDATA_BASE_URL = 'https://www.wikidata.org/w/api.php';\n\n private readonly WIKIDATA_DEFAULT_ARGS =\n '?action=wbsearchentities&format=json&language=en&uselang=en&origin=*&type=item&limit=5';\n\n /**\n * Returns the full URL for a Wikidata search for the given query\n * @param query The query to search for\n */\n private getWikidataURL(query: string): string {\n const urlQuery = encodeURIComponent(query);\n return `${this.WIKIDATA_BASE_URL}${this.WIKIDATA_DEFAULT_ARGS}&search=${urlQuery}`;\n }\n\n /**\n * Replaces query placeholders with an actual query string, within a collection of smart facets\n * @param smartFacets The array of smart facets\n * @param query The query string to replace placeholders with\n * @returns A new array of smart facets with all query placeholders replaced\n */\n private replaceQueryPlaceholders(\n smartFacets: SmartFacet[],\n query: string,\n ): SmartFacet[] {\n return smartFacets.map(\n smartFacet =>\n ({\n // Replace placeholders within the smart facet label\n label: smartFacet.label?.replace('__QUERY', query),\n // Replace placeholders within the facets themselves (buckets & display text)\n facets: smartFacet.facets.map(facet => {\n const replaced = {\n ...facet,\n bucketKey: facet.bucketKey.replace('__QUERY', query),\n };\n\n if (facet.displayText) {\n replaced.displayText = replaced.displayText?.replace(\n '__QUERY',\n query,\n );\n }\n\n return replaced;\n }),\n }) as SmartFacet,\n );\n }\n\n /**\n * @inheritdoc\n */\n async getRecommendedFacets(query: string): Promise<SmartFacet[]> {\n const recommendations: SmartFacet[] = [];\n\n try {\n const wikidataURL = this.getWikidataURL(query);\n const wikidataResponse = await fetch(wikidataURL);\n const searchResults = await wikidataResponse.json();\n\n for (const [keyword, facets] of Object.entries(WIKIDATA_ENTITIES)) {\n const keywordRegex = new RegExp(`\\\\b${keyword}\\\\b`);\n if (keywordRegex.test(searchResults.search[0]?.description)) {\n const entityName = searchResults.search[0].label;\n recommendations.push(\n ...this.replaceQueryPlaceholders(facets, entityName),\n );\n }\n }\n\n return recommendations;\n } catch (err) {\n return [];\n }\n }\n}\n"]}
1
+ {"version":3,"file":"wikidata-heuristic.js","sourceRoot":"","sources":["../../../../../../src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SmartQueryHeuristic, SmartFacet } from '../../models';\nimport { WIKIDATA_ENTITIES } from './wikidata-entity-map';\n\n// If wikidata describes the top query result as X, recommend facet Y, e.g.:\n// X Y\n// written work mt:texts\n// film mt:movies\n// author mt:texts and creator:<query>\n// filmmaker mt:movies and creator:<query>\n// photographer mt:image and creator:<query>\n// visual artist mt:image and creator:<query>\n// etc.\nexport class WikidataHeuristic implements SmartQueryHeuristic {\n private readonly WIKIDATA_BASE_URL = 'https://www.wikidata.org/w/api.php';\n\n private readonly WIKIDATA_DEFAULT_ARGS =\n '?action=wbsearchentities&format=json&language=en&uselang=en&origin=*&type=item&limit=5';\n\n /**\n * Returns the full URL for a Wikidata search for the given query\n * @param query The query to search for\n */\n private getWikidataURL(query: string): string {\n const urlQuery = encodeURIComponent(query);\n return `${this.WIKIDATA_BASE_URL}${this.WIKIDATA_DEFAULT_ARGS}&search=${urlQuery}`;\n }\n\n /**\n * Replaces query placeholders with an actual query string, within a collection of smart facets\n * @param smartFacets The array of smart facets\n * @param query The query string to replace placeholders with\n * @returns A new array of smart facets with all query placeholders replaced\n */\n private replaceQueryPlaceholders(\n smartFacets: SmartFacet[],\n query: string,\n ): SmartFacet[] {\n return smartFacets.map(\n smartFacet =>\n ({\n // Replace placeholders within the smart facet label\n label: smartFacet.label?.replace('__QUERY', query),\n // Replace placeholders within the facets themselves (buckets & display text)\n facets: smartFacet.facets.map(facet => {\n const replaced = {\n ...facet,\n bucketKey: facet.bucketKey.replace('__QUERY', query),\n };\n\n if (facet.displayText) {\n replaced.displayText = replaced.displayText?.replace(\n '__QUERY',\n query,\n );\n }\n\n return replaced;\n }),\n }) as SmartFacet,\n );\n }\n\n /**\n * @inheritdoc\n */\n async getRecommendedFacets(query: string): Promise<SmartFacet[]> {\n const recommendations: SmartFacet[] = [];\n\n try {\n const wikidataURL = this.getWikidataURL(query);\n const wikidataResponse = await fetch(wikidataURL);\n const searchResults = await wikidataResponse.json();\n console.log('wikidata results', searchResults);\n\n for (const [keyword, facets] of Object.entries(WIKIDATA_ENTITIES)) {\n console.log('testing keyword', keyword);\n const keywordRegex = new RegExp(`\\\\b${keyword}\\\\b`);\n console.log('regex', keywordRegex);\n console.log('description', searchResults.search[0]?.description);\n console.log('test', keywordRegex.test(searchResults.search[0]?.description));\n if (keywordRegex.test(searchResults.search[0]?.description)) {\n const entityName = searchResults.search[0].label;\n recommendations.push(\n ...this.replaceQueryPlaceholders(facets, entityName),\n );\n }\n console.log('recs', recommendations);\n }\n\n return recommendations;\n } catch (err) {\n console.warn(err);\n return [];\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "The Internet Archive Collection Browser.",
4
4
  "license": "AGPL-3.0-only",
5
5
  "author": "Internet Archive",
6
- "version": "2.8.1-alpha-webdev7002.1",
6
+ "version": "2.8.1-alpha-webdev7002.2",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.js",
9
9
  "scripts": {
@@ -1,42 +1,54 @@
1
- import type { KeywordFacetMap } from '../../models';
1
+ import type { KeywordFacetMap, SmartFacet } from '../../models';
2
+
3
+ const TEXTS: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] };
4
+ const AUDIO: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] };
5
+ const MOVIES: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] };
6
+ const IMAGE: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'image' }] };
7
+ const SOFTWARE: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'software' }] };
8
+ const ETREE: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] };
9
+ const WEB: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'web' }] };
10
+ const DATA: SmartFacet = { facets: [{ facetType: 'mediatype', bucketKey: 'data' }] };
2
11
 
3
12
  /**
4
13
  * Map from keywords found in the search query to an array of
5
14
  * likely-relevant "smart facets" for those keywords.
6
15
  */
7
16
  export const QUERY_KEYWORDS: Readonly<KeywordFacetMap> = {
8
- text: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
9
- book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
10
- novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
11
- magazine: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
12
- newspaper: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
13
- pdf: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
14
- epub: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
15
- audio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
16
- song: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
17
- music: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
18
- listen: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
19
- podcast: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
20
- radio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
21
- stream: [
22
- { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] },
23
- { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] },
24
- ],
25
- video: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
26
- movie: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
27
- film: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
28
- animation: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
29
- youtube: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
30
- image: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
31
- photo: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
32
- picture: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
33
- painting: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
34
- software: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
35
- app: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
36
- program: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
37
- game: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
38
- etree: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
39
- concert: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
40
- 'live music': [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
41
- dataset: [{ facets: [{ facetType: 'mediatype', bucketKey: 'data' }] }],
17
+ text: [TEXTS],
18
+ book: [TEXTS],
19
+ novel: [TEXTS],
20
+ magazine: [TEXTS],
21
+ newspaper: [TEXTS],
22
+ pdf: [TEXTS],
23
+ epub: [TEXTS],
24
+ audio: [AUDIO],
25
+ song: [AUDIO],
26
+ music: [AUDIO],
27
+ listen: [AUDIO],
28
+ podcast: [AUDIO],
29
+ radio: [AUDIO],
30
+ stream: [AUDIO, MOVIES],
31
+ video: [MOVIES],
32
+ movie: [MOVIES],
33
+ film: [MOVIES],
34
+ animation: [MOVIES],
35
+ youtube: [MOVIES],
36
+ image: [IMAGE],
37
+ photo: [IMAGE],
38
+ picture: [IMAGE],
39
+ painting: [IMAGE],
40
+ jpg: [IMAGE],
41
+ jpeg: [IMAGE],
42
+ png: [IMAGE],
43
+ gif: [IMAGE],
44
+ software: [SOFTWARE],
45
+ app: [SOFTWARE],
46
+ program: [SOFTWARE],
47
+ game: [SOFTWARE],
48
+ arcade: [SOFTWARE],
49
+ etree: [ETREE],
50
+ concert: [ETREE],
51
+ 'live music': [ETREE],
52
+ 'web crawl': [WEB],
53
+ dataset: [DATA],
42
54
  };
@@ -1,4 +1,48 @@
1
- import type { KeywordFacetMap } from '../../models';
1
+ import type { KeywordFacetMap, SmartFacet } from '../../models';
2
+
3
+ const WRITTEN_WORK_SMART_FACETS: SmartFacet[] = [
4
+ { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
5
+ ];
6
+
7
+ const FILMMAKER_SMART_FACETS: SmartFacet[] = [
8
+ {
9
+ label: 'Films by __QUERY',
10
+ facets: [
11
+ { facetType: 'mediatype', bucketKey: 'movies' },
12
+ { facetType: 'creator', bucketKey: '__QUERY' },
13
+ ],
14
+ },
15
+ ];
16
+
17
+ const AUTHOR_SMART_FACETS: SmartFacet[] = [
18
+ {
19
+ label: 'Writing by __QUERY',
20
+ facets: [
21
+ { facetType: 'mediatype', bucketKey: 'texts' },
22
+ { facetType: 'creator', bucketKey: '__QUERY' },
23
+ ],
24
+ },
25
+ ];
26
+
27
+ const VISUAL_ARTIST_SMART_FACETS: SmartFacet[] = [
28
+ {
29
+ label: 'Images by __QUERY',
30
+ facets: [
31
+ { facetType: 'mediatype', bucketKey: 'image' },
32
+ { facetType: 'creator', bucketKey: '__QUERY' },
33
+ ],
34
+ },
35
+ ];
36
+
37
+ const MUSICIAN_SMART_FACETS: SmartFacet[] = [
38
+ {
39
+ label: 'Music by __QUERY',
40
+ facets: [
41
+ { facetType: 'mediatype', bucketKey: 'audio' },
42
+ { facetType: 'creator', bucketKey: '__QUERY' },
43
+ ],
44
+ },
45
+ ];
2
46
 
3
47
  /**
4
48
  * Map from Wikidata description keywords for a given entity to a
@@ -8,127 +52,28 @@ import type { KeywordFacetMap } from '../../models';
8
52
  * queried entity when generating facet values.
9
53
  */
10
54
  export const WIKIDATA_ENTITIES: Readonly<KeywordFacetMap> = {
11
- 'written work': [
12
- { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
13
- ],
14
- literature: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
15
- book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
16
- novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
17
- filmmaker: [
18
- {
19
- label: 'Films by __QUERY',
20
- facets: [
21
- { facetType: 'mediatype', bucketKey: 'movies' },
22
- { facetType: 'creator', bucketKey: '__QUERY' },
23
- ],
24
- },
25
- ],
26
- author: [
27
- {
28
- label: 'Writing by __QUERY',
29
- facets: [
30
- { facetType: 'mediatype', bucketKey: 'texts' },
31
- { facetType: 'creator', bucketKey: '__QUERY' },
32
- ],
33
- },
34
- ],
35
- writer: [
36
- {
37
- label: 'Writing by __QUERY',
38
- facets: [
39
- { facetType: 'mediatype', bucketKey: 'texts' },
40
- { facetType: 'creator', bucketKey: '__QUERY' },
41
- ],
42
- },
43
- ],
44
- poet: [
45
- {
46
- label: 'Writing by __QUERY',
47
- facets: [
48
- { facetType: 'mediatype', bucketKey: 'texts' },
49
- { facetType: 'creator', bucketKey: '__QUERY' },
50
- ],
51
- },
52
- ],
53
- photographer: [
54
- {
55
- label: 'Images by __QUERY',
56
- facets: [
57
- { facetType: 'mediatype', bucketKey: 'image' },
58
- { facetType: 'creator', bucketKey: '__QUERY' },
59
- ],
60
- },
61
- ],
62
- painter: [
63
- {
64
- label: 'Images by __QUERY',
65
- facets: [
66
- { facetType: 'mediatype', bucketKey: 'image' },
67
- { facetType: 'creator', bucketKey: '__QUERY' },
68
- ],
69
- },
70
- ],
71
- 'visual artist': [
72
- {
73
- label: 'Images by __QUERY',
74
- facets: [
75
- { facetType: 'mediatype', bucketKey: 'image' },
76
- { facetType: 'creator', bucketKey: '__QUERY' },
77
- ],
78
- },
79
- ],
80
- 'graphic artist': [
81
- {
82
- label: 'Images by __QUERY',
83
- facets: [
84
- { facetType: 'mediatype', bucketKey: 'image' },
85
- { facetType: 'creator', bucketKey: '__QUERY' },
86
- ],
87
- },
88
- ],
89
- singer: [
90
- {
91
- label: 'Music by __QUERY',
92
- facets: [
93
- { facetType: 'mediatype', bucketKey: 'audio' },
94
- { facetType: 'creator', bucketKey: '__QUERY' },
95
- ],
96
- },
97
- ],
98
- songwriter: [
99
- {
100
- label: 'Music by __QUERY',
101
- facets: [
102
- { facetType: 'mediatype', bucketKey: 'audio' },
103
- { facetType: 'creator', bucketKey: '__QUERY' },
104
- ],
105
- },
106
- ],
107
- musician: [
108
- {
109
- label: 'Music by __QUERY',
110
- facets: [
111
- { facetType: 'mediatype', bucketKey: 'audio' },
112
- { facetType: 'creator', bucketKey: '__QUERY' },
113
- ],
114
- },
115
- ],
116
- composer: [
117
- {
118
- label: 'Music by __QUERY',
119
- facets: [
120
- { facetType: 'mediatype', bucketKey: 'audio' },
121
- { facetType: 'creator', bucketKey: '__QUERY' },
122
- ],
123
- },
124
- ],
125
- pianist: [
126
- {
127
- label: 'Music by __QUERY',
128
- facets: [
129
- { facetType: 'mediatype', bucketKey: 'audio' },
130
- { facetType: 'creator', bucketKey: '__QUERY' },
131
- ],
132
- },
133
- ],
55
+ 'written work': WRITTEN_WORK_SMART_FACETS,
56
+ literature: WRITTEN_WORK_SMART_FACETS,
57
+ book: WRITTEN_WORK_SMART_FACETS,
58
+ novel: WRITTEN_WORK_SMART_FACETS,
59
+
60
+ filmmaker: FILMMAKER_SMART_FACETS,
61
+ director: FILMMAKER_SMART_FACETS,
62
+
63
+ author: AUTHOR_SMART_FACETS,
64
+ writer: AUTHOR_SMART_FACETS,
65
+ novelist: AUTHOR_SMART_FACETS,
66
+ essayist: AUTHOR_SMART_FACETS,
67
+ poet: AUTHOR_SMART_FACETS,
68
+
69
+ 'visual artist': VISUAL_ARTIST_SMART_FACETS,
70
+ 'graphic artist': VISUAL_ARTIST_SMART_FACETS,
71
+ photographer: VISUAL_ARTIST_SMART_FACETS,
72
+ painter: VISUAL_ARTIST_SMART_FACETS,
73
+
74
+ singer: MUSICIAN_SMART_FACETS,
75
+ songwriter: MUSICIAN_SMART_FACETS,
76
+ musician: MUSICIAN_SMART_FACETS,
77
+ composer: MUSICIAN_SMART_FACETS,
78
+ pianist: MUSICIAN_SMART_FACETS,
134
79
  };
@@ -70,19 +70,26 @@ export class WikidataHeuristic implements SmartQueryHeuristic {
70
70
  const wikidataURL = this.getWikidataURL(query);
71
71
  const wikidataResponse = await fetch(wikidataURL);
72
72
  const searchResults = await wikidataResponse.json();
73
+ console.log('wikidata results', searchResults);
73
74
 
74
75
  for (const [keyword, facets] of Object.entries(WIKIDATA_ENTITIES)) {
76
+ console.log('testing keyword', keyword);
75
77
  const keywordRegex = new RegExp(`\\b${keyword}\\b`);
78
+ console.log('regex', keywordRegex);
79
+ console.log('description', searchResults.search[0]?.description);
80
+ console.log('test', keywordRegex.test(searchResults.search[0]?.description));
76
81
  if (keywordRegex.test(searchResults.search[0]?.description)) {
77
82
  const entityName = searchResults.search[0].label;
78
83
  recommendations.push(
79
84
  ...this.replaceQueryPlaceholders(facets, entityName),
80
85
  );
81
86
  }
87
+ console.log('recs', recommendations);
82
88
  }
83
89
 
84
90
  return recommendations;
85
91
  } catch (err) {
92
+ console.warn(err);
86
93
  return [];
87
94
  }
88
95
  }