added synonyms to search autocomplete and results, improved collection admin view
This commit is contained in:
@@ -93,6 +93,8 @@ class EdlpSearchController extends ControllerBase {
|
||||
$response = new JsonResponse($this->matches);
|
||||
return $response;
|
||||
|
||||
// dpm($this->matches, 'matches');
|
||||
//
|
||||
// return array(
|
||||
// "#markup" => "autocomplete"
|
||||
// );
|
||||
@@ -132,32 +134,45 @@ class EdlpSearchController extends ControllerBase {
|
||||
$query->keys($this->keys);
|
||||
}
|
||||
|
||||
// select the field in which search will be performed
|
||||
$query->setFulltextFields(array($this->field_name));
|
||||
|
||||
if(null !== $this->field_synonyms){
|
||||
// select the taxo field AND the synonym field in which search will be performed
|
||||
$query->setFulltextFields(array($this->field_name, $this->field_synonyms));
|
||||
}else{
|
||||
// OR select the unique taxo field in which search will be performed
|
||||
$query->setFulltextFields(array($this->field_name));
|
||||
}
|
||||
|
||||
$result = $query->execute();
|
||||
$items = $result->getResultItems();
|
||||
|
||||
$this->matches = [];
|
||||
foreach ($items as $item) {
|
||||
// get the field from item
|
||||
try {
|
||||
/** @var \Drupal\Core\Entity\EntityInterface $entity */
|
||||
$fields = $item->getField($this->field_name)->getValues();
|
||||
}catch (SearchApiException $e) {
|
||||
// if error on getinfg the field, skip item
|
||||
continue;
|
||||
}
|
||||
// if no fields returned, skip item
|
||||
if (!$fields) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// get field content
|
||||
$field_text = $fields[0]->getText();
|
||||
|
||||
// if content already in matches, skip item
|
||||
if( in_array($field_text, $this->matches) ){
|
||||
continue;
|
||||
}
|
||||
|
||||
// add the item to the return list
|
||||
$this->matches[] = $field_text;
|
||||
|
||||
// do not return more than 14 items
|
||||
if(count($this->matches) > 14){
|
||||
break;
|
||||
}
|
||||
@@ -169,8 +184,12 @@ class EdlpSearchController extends ControllerBase {
|
||||
* getRequestArgs
|
||||
*/
|
||||
private function getRequestAutocompleteArgs(){
|
||||
// args are provided by form definition with autocomplete_route_parameters
|
||||
// dpm($this->request);
|
||||
$this->field_name = $this->request->query->get('field_name');
|
||||
// if($this->request->query->get('field_synonyms')){
|
||||
$this->field_synonyms = $this->request->query->get('field_synonyms');
|
||||
// }
|
||||
$this->keys = $this->request->query->get('q');
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ class EdlpSearchForm extends FormBase {
|
||||
'genres' => [
|
||||
'#type' => 'textfield',
|
||||
'#autocomplete_route_name' => 'edlp_search.edlp_search_controller_autocomplete',
|
||||
'#autocomplete_route_parameters' => array('field_name' => 'field_genres'),
|
||||
'#autocomplete_route_parameters' => array('field_name' => 'field_genres', 'field_synonyms' => 'field_synonyms'),
|
||||
'#maxlength' => 20,
|
||||
'#size' => 15,
|
||||
'#weight' => '0',
|
||||
|
||||
@@ -12,6 +12,7 @@ dependencies:
|
||||
- field.storage.node.field_workflow
|
||||
- field.storage.node.field_genres
|
||||
- field.storage.node.field_langues
|
||||
- field.storage.taxonomy_term.field_synonyms
|
||||
- search_api.server.edlp_db
|
||||
module:
|
||||
- taxonomy
|
||||
@@ -138,6 +139,17 @@ field_settings:
|
||||
- field.storage.node.field_langues
|
||||
module:
|
||||
- taxonomy
|
||||
field_synonyms:
|
||||
label: 'Genre(s) » Taxonomy term » Synonyms'
|
||||
datasource_id: 'entity:node'
|
||||
property_path: 'field_genres:entity:field_synonyms'
|
||||
type: text
|
||||
dependencies:
|
||||
config:
|
||||
- field.storage.node.field_genres
|
||||
- field.storage.taxonomy_term.field_synonyms
|
||||
module:
|
||||
- taxonomy
|
||||
datasource_settings:
|
||||
'entity:node':
|
||||
bundles:
|
||||
@@ -161,6 +173,7 @@ processor_settings:
|
||||
- name
|
||||
- field_genres
|
||||
- field_langues
|
||||
- field_synonyms
|
||||
spaces: ''
|
||||
overlap_cjk: 1
|
||||
minimum_word_size: '3'
|
||||
@@ -200,6 +213,7 @@ processor_settings:
|
||||
- name
|
||||
- field_genres
|
||||
- field_langues
|
||||
- field_synonyms
|
||||
stopwords:
|
||||
- a
|
||||
- an
|
||||
@@ -251,6 +265,7 @@ processor_settings:
|
||||
- field_workflow
|
||||
- field_genres
|
||||
- field_langues
|
||||
- field_synonyms
|
||||
weights:
|
||||
preprocess_index: -20
|
||||
preprocess_query: -20
|
||||
@@ -266,6 +281,7 @@ processor_settings:
|
||||
- field_workflow
|
||||
- field_genres
|
||||
- field_langues
|
||||
- field_synonyms
|
||||
weights:
|
||||
preprocess_index: -20
|
||||
preprocess_query: -20
|
||||
|
||||
@@ -28,6 +28,8 @@ dependencies:
|
||||
- node.type.page
|
||||
- node.type.static
|
||||
- taxonomy.vocabulary.entrees
|
||||
- taxonomy.vocabulary.genres
|
||||
- taxonomy.vocabulary.langues
|
||||
- taxonomy.vocabulary.page_type
|
||||
- user.role.admin
|
||||
- user.role.collectionneur
|
||||
@@ -2172,6 +2174,104 @@ display:
|
||||
entity_type: node
|
||||
entity_field: langcode
|
||||
plugin_id: language
|
||||
field_genres_target_id:
|
||||
id: field_genres_target_id
|
||||
table: node__field_genres
|
||||
field: field_genres_target_id
|
||||
relationship: none
|
||||
group_type: group
|
||||
admin_label: ''
|
||||
operator: or
|
||||
value: { }
|
||||
group: 1
|
||||
exposed: true
|
||||
expose:
|
||||
operator_id: field_genres_target_id_op
|
||||
label: 'Genre(s) (field_genres)'
|
||||
description: ''
|
||||
use_operator: false
|
||||
operator: field_genres_target_id_op
|
||||
identifier: field_genres_target_id
|
||||
required: false
|
||||
remember: false
|
||||
multiple: false
|
||||
remember_roles:
|
||||
authenticated: authenticated
|
||||
anonymous: '0'
|
||||
collectionneur: '0'
|
||||
admin: '0'
|
||||
root: '0'
|
||||
invite: '0'
|
||||
user: '0'
|
||||
reduce: false
|
||||
is_grouped: false
|
||||
group_info:
|
||||
label: ''
|
||||
description: ''
|
||||
identifier: ''
|
||||
optional: true
|
||||
widget: select
|
||||
multiple: false
|
||||
remember: false
|
||||
default_group: All
|
||||
default_group_multiple: { }
|
||||
group_items: { }
|
||||
reduce_duplicates: false
|
||||
type: textfield
|
||||
limit: true
|
||||
vid: genres
|
||||
hierarchy: false
|
||||
error_message: true
|
||||
plugin_id: taxonomy_index_tid
|
||||
field_langues_target_id:
|
||||
id: field_langues_target_id
|
||||
table: node__field_langues
|
||||
field: field_langues_target_id
|
||||
relationship: none
|
||||
group_type: group
|
||||
admin_label: ''
|
||||
operator: or
|
||||
value: { }
|
||||
group: 1
|
||||
exposed: true
|
||||
expose:
|
||||
operator_id: field_langues_target_id_op
|
||||
label: 'Langue(s) (field_langues)'
|
||||
description: ''
|
||||
use_operator: false
|
||||
operator: field_langues_target_id_op
|
||||
identifier: field_langues_target_id
|
||||
required: false
|
||||
remember: false
|
||||
multiple: false
|
||||
remember_roles:
|
||||
authenticated: authenticated
|
||||
anonymous: '0'
|
||||
collectionneur: '0'
|
||||
admin: '0'
|
||||
root: '0'
|
||||
invite: '0'
|
||||
user: '0'
|
||||
reduce: false
|
||||
is_grouped: false
|
||||
group_info:
|
||||
label: ''
|
||||
description: ''
|
||||
identifier: ''
|
||||
optional: true
|
||||
widget: select
|
||||
multiple: false
|
||||
remember: false
|
||||
default_group: All
|
||||
default_group_multiple: { }
|
||||
group_items: { }
|
||||
reduce_duplicates: false
|
||||
type: textfield
|
||||
limit: true
|
||||
vid: langues
|
||||
hierarchy: false
|
||||
error_message: true
|
||||
plugin_id: taxonomy_index_tid
|
||||
defaults:
|
||||
filters: false
|
||||
filter_groups: false
|
||||
|
||||
@@ -867,10 +867,12 @@ display:
|
||||
defaults:
|
||||
filters: false
|
||||
filter_groups: false
|
||||
title: false
|
||||
filter_groups:
|
||||
operator: AND
|
||||
groups:
|
||||
1: AND
|
||||
title: Entrees
|
||||
cache_metadata:
|
||||
max-age: -1
|
||||
contexts:
|
||||
@@ -1069,6 +1071,7 @@ display:
|
||||
fields: false
|
||||
filters: false
|
||||
filter_groups: false
|
||||
title: false
|
||||
filters:
|
||||
vid:
|
||||
id: vid
|
||||
@@ -1243,6 +1246,7 @@ display:
|
||||
operator: AND
|
||||
groups:
|
||||
1: AND
|
||||
title: Genres
|
||||
cache_metadata:
|
||||
max-age: -1
|
||||
contexts:
|
||||
|
||||
Reference in New Issue
Block a user