File tree 4 files changed +20
-2
lines changed
4 files changed +20
-2
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ var clientConfig = {
27
27
defaultUseViewBox : true ,
28
28
useNominatim : true ,
29
29
groupByCategory : true ,
30
+ boostDisplayedFields : false ,
30
31
useSolrHighlighting : true ,
31
32
delay : 1000 ,
32
33
minChars : 3 ,
Original file line number Diff line number Diff line change @@ -226,7 +226,16 @@ export const MultiSearch: React.FC<MultiSearchProps> = ({
226
226
} ;
227
227
228
228
if ( q . fieldList ) {
229
- solrQueryConfig . qf = q . fieldList ;
229
+ let qf = q . fieldList ;
230
+ if ( q . displayTemplates && ClientConfiguration . search ?. boostDisplayedFields ) {
231
+ // boost all fields which are part of the display template
232
+ qf = q . fieldList
233
+ . split ( ' ' )
234
+ // todo: do we want do require a match for all displayTempaltes (every) or for any (some)
235
+ . map ( field => q . displayTemplates ?. some ( dt => dt . indexOf ( field ) >= 0 ) ? `${ field } ^3` : field )
236
+ . join ( ' ' ) ;
237
+ }
238
+ solrQueryConfig . qf = qf ;
230
239
} else {
231
240
solrQueryConfig . qf = ClientConfiguration . search ?. coreName ?? 'search' ;
232
241
}
Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ declare module 'clientConfig' {
28
28
solrBasePath ?: string ;
29
29
useNominatim ?: boolean ;
30
30
groupByCategory ?: boolean ;
31
+ boostDisplayedFields ?: boolean ;
31
32
useSolrHighlighting ?: boolean ;
32
33
defaultUseViewBox ?: boolean ;
33
34
delay ?: number ;
Original file line number Diff line number Diff line change 1
1
import _groupBy from 'lodash/groupBy' ;
2
+ import _isNil from 'lodash/isNil' ;
2
3
import Map from 'ol/Map' ;
3
4
4
5
import {
@@ -18,6 +19,7 @@ export interface SolrQueryProps {
18
19
type SolrQuery = {
19
20
query : string ;
20
21
fieldList ?: string ;
22
+ displayTemplates ?: string [ ] ;
21
23
} ;
22
24
23
25
/**
@@ -45,11 +47,16 @@ export const generateSolrQuery = ({
45
47
. filter ( l => isWmsLayer ( l ) )
46
48
. map ( l => ( l as WmsLayer ) . getSource ( ) ?. getParams ( ) ?. LAYERS ) ;
47
49
50
+ const displayTemplates = layerList
51
+ . map ( l => ( l . get ( 'searchConfig' ) as SearchConfig ) ?. displayTemplate )
52
+ . filter ( d => d ) as string [ ] ;
53
+
48
54
const queriesPerQueryFields = layerNames . map ( layerName => `(featureType:"${ layerName } " AND (${ generateSearchQuery ( parts ) } ))` ) ;
49
55
const query = queriesPerQueryFields . join ( ' OR ' ) ;
50
56
searchQueries . push ( {
51
57
query : query ,
52
- fieldList : key !== 'undefined' ? key . split ( ',' ) . join ( ' ' ) : undefined
58
+ fieldList : key !== 'undefined' ? key . split ( ',' ) . join ( ' ' ) : undefined ,
59
+ displayTemplates : displayTemplates
53
60
} ) ;
54
61
} ) ;
55
62
You can’t perform that action at this time.
0 commit comments