source: vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSolrSpringConfig.java @ 5999

Last change on this file since 5999 was 5999, checked in by Twan Goosen, 9 years ago

Replaced 'language' and 'languages' fields with 'language code' in web app.
TODO: render full language name (get it from the language code utils map) and generate link to language info page
Refs #553

File size: 4.3 KB
Line 
1/*
2 * Copyright (C) 2014 CLARIN
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17package eu.clarin.cmdi.vlo.config;
18
19import com.google.common.collect.ImmutableList;
20import eu.clarin.cmdi.vlo.FacetConstants;
21import eu.clarin.cmdi.vlo.service.solr.AutoCompleteService;
22import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
23import eu.clarin.cmdi.vlo.service.solr.SearchResultsDao;
24import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
25import eu.clarin.cmdi.vlo.service.solr.SolrFacetQueryFactory;
26import eu.clarin.cmdi.vlo.service.solr.impl.AutoCompleteServiceImpl;
27import eu.clarin.cmdi.vlo.service.solr.impl.SearchResultsDaoImpl;
28import eu.clarin.cmdi.vlo.service.solr.impl.SolrDocumentQueryFactoryImpl;
29import eu.clarin.cmdi.vlo.service.solr.impl.SolrDocumentServiceImpl;
30import eu.clarin.cmdi.vlo.service.solr.impl.SolrFacetFieldsService;
31import eu.clarin.cmdi.vlo.service.solr.impl.SolrFacetQueryFactoryImpl;
32import java.util.List;
33import javax.inject.Inject;
34import org.apache.solr.client.solrj.SolrServer;
35import org.apache.solr.client.solrj.impl.HttpSolrServer;
36import org.springframework.context.annotation.Bean;
37import org.springframework.context.annotation.Configuration;
38
39/**
40 * Beans for SOLR related services (DAO's, query factories)
41 *
42 * @author twagoo
43 */
44@Configuration
45public class VloSolrSpringConfig {
46
47    @Inject
48    private VloConfig vloConfig;
49
50    @Bean
51    public FacetFieldsService facetFieldsService() {
52        return new SolrFacetFieldsService(searchResultsDao(), facetQueryFactory());
53    }
54
55    @Bean
56    public SolrFacetQueryFactory facetQueryFactory() {
57        return new SolrFacetQueryFactoryImpl();
58    }
59
60    @Bean
61    public SolrDocumentService documentService() {
62        return new SolrDocumentServiceImpl(searchResultsDao(), documentQueryFactory());
63    }
64
65    @Bean
66    public SearchResultsDao searchResultsDao() {
67        return new SearchResultsDaoImpl(solrServer(), vloConfig);
68    }
69
70    @Bean
71    public SolrDocumentQueryFactoryImpl documentQueryFactory() {
72        return new SolrDocumentQueryFactoryImpl(DOCUMENT_FIELDS);
73    }
74
75    @Bean
76    public AutoCompleteService autoCompleteService() {
77        return new AutoCompleteServiceImpl(solrServer(), vloConfig);
78    }
79
80    @Bean
81    public SolrServer solrServer() {
82        return new HttpSolrServer(vloConfig.getSolrUrl());
83    }
84
85    @Bean(name = "documentFieldOrder")
86    public List<String> documentFieldOrder() {
87        return DOCUMENT_FIELDS;
88    }
89
90    /**
91     * Fields to request for documents. TODO: Make configurable?
92     *
93     */
94    public static final List<String> DOCUMENT_FIELDS = ImmutableList.of(
95            FacetConstants.FIELD_NAME,
96            FacetConstants.FIELD_DESCRIPTION,
97            FacetConstants.FIELD_COLLECTION,
98            FacetConstants.FIELD_LANGUAGE_CODE,
99            FacetConstants.FIELD_MODALITY,
100            FacetConstants.FIELD_CONTINENT,
101            FacetConstants.FIELD_COUNTRY,
102            FacetConstants.FIELD_GENRE,
103            FacetConstants.FIELD_SUBJECT,
104            FacetConstants.FIELD_ORGANISATION,
105            FacetConstants.FIELD_KEYWORDS,
106            FacetConstants.FIELD_NATIONAL_PROJECT,
107            FacetConstants.FIELD_RESOURCE_CLASS,
108            FacetConstants.FIELD_RESOURCE,
109            FacetConstants.FIELD_SELF_LINK,
110            FacetConstants.FIELD_ID,
111            FacetConstants.FIELD_DATA_PROVIDER,
112            FacetConstants.FIELD_FILENAME,
113            FacetConstants.FIELD_FORMAT,
114            FacetConstants.FIELD_LANDINGPAGE,
115            FacetConstants.FIELD_SEARCHPAGE,
116            FacetConstants.FIELD_SEARCH_SERVICE,
117            FacetConstants.FIELD_LAST_SEEN,
118            FacetConstants.FIELD_CLARIN_PROFILE,
119            FacetConstants.FIELD_COMPLETE_METADATA
120    );
121}
Note: See TracBrowser for help on using the repository browser.