diff --git a/pom.xml b/pom.xml index 9c0f4db..4bc0d4c 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ fr.paris.lutece.plugins plugin-solr lutece-plugin - 3.1.4-SNAPSHOT + 3.1.4a-SNAPSHOT Lutece solr search plugin diff --git a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java index c2d23c2..bb7b451 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java @@ -48,10 +48,10 @@ public class SolrSearchAppConf { private String _strCode = SolrSearchAppConfService.EMPTY_CODE; - private String _strFilterQuery = SolrConstants.CONSTANT_DEFAULT_FILTER_QUERY; private String _strTemplate = SolrConstants.CONSTANT_DEFAULT_TEMPLATE; private boolean _bExtraMappingQuery = SolrConstants.CONSTANT_DEFAULT_EXTRA_MAPPING_QUERY; private List _listAddonBeanNames = new ArrayList( ); + private List _listFilterQuery = new ArrayList( ); /** * Returns the code @@ -89,24 +89,6 @@ public void setTemplate( String template ) _strTemplate = template; } - /** - * Returns the filter query - * @return the filter query - */ - public String getFilterQuery( ) - { - return _strFilterQuery; - } - - /** - * Sets the filter query - * @param filter query the code - */ - public void setFilterQuery( String strFilterQuery ) - { - _strFilterQuery = strFilterQuery; - } - /** * Returns the boolean indicating if we need an extra query for mapping * @return the boolean indicating if we need an extra query for mapping @@ -138,4 +120,18 @@ public List getAddonBeanNames() { public void setAddonBeanNames(List listAddonBeanNames) { this._listAddonBeanNames = listAddonBeanNames; } + + /** + * @return the Filter Query list + */ + public List getListFilterQuery() { + return _listFilterQuery; + } + + /** + * @param listFilterQuery the Filter Query list to set + */ + public void setListFilterQuery(List listFilterQuery) { + this._listFilterQuery = listFilterQuery; + } } diff --git a/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java b/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java index 98cf9c1..9d9157f 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java @@ -52,10 +52,10 @@ public class SolrSearchAppConfService public static final String EMPTY_CODE = ""; private static final String DSKEY_PREFIX = "solr.app.conf."; private static final String DSKEY_INSTALLED = ".installed"; - private static final String DSKEY_FQ = ".fq"; private static final String DSKEY_TEMPLATE = ".template"; private static final String DSKEY_MAPPING = ".mapping"; private static final String DSKEY_ADDON_BEANS = ".addonBeans."; + private static final String DSKEY_FQ_LIST = ".fq."; public static SolrSearchAppConf loadConfiguration( String code ) { @@ -72,15 +72,12 @@ public static SolrSearchAppConf loadConfiguration( String code ) conf.setCode( strSafeCode ); String strAddonPrefix = strPrefix + DSKEY_ADDON_BEANS; + String strFqListPrefix = strPrefix + DSKEY_FQ_LIST; for ( ReferenceItem referenceItem : referenceList ) { String referenceItemCode = referenceItem.getCode( ); String referenceItemName = referenceItem.getName( ); - if ( referenceItemCode.endsWith( DSKEY_FQ ) ) - { - conf.setFilterQuery( referenceItemName ); - } - else if ( referenceItemCode.endsWith( DSKEY_TEMPLATE ) ) + if ( referenceItemCode.endsWith( DSKEY_TEMPLATE ) ) { conf.setTemplate( referenceItemName ); } @@ -92,6 +89,10 @@ else if ( referenceItemCode.startsWith( strAddonPrefix ) ) { conf.getAddonBeanNames().add ( referenceItemName ); } + else if ( referenceItemCode.startsWith( strFqListPrefix ) ) + { + conf.getListFilterQuery( ).add ( referenceItemName ); + } } return conf; @@ -102,7 +103,6 @@ public static void saveConfiguration( SolrSearchAppConf conf ) String strSafeCode = ( conf.getCode( ) != null ) ? conf.getCode( ) : EMPTY_CODE; String strPrefix = DSKEY_PREFIX + strSafeCode; DatastoreService.setDataValue( strPrefix + DSKEY_INSTALLED, SolrConstants.CONSTANT_TRUE ); - DatastoreService.setDataValue( strPrefix + DSKEY_FQ, conf.getFilterQuery( ) ); DatastoreService.setDataValue( strPrefix + DSKEY_TEMPLATE, conf.getTemplate( ) ); DatastoreService.setDataValue( strPrefix + DSKEY_MAPPING, conf.getExtraMappingQuery( ) ? SolrConstants.CONSTANT_TRUE : SolrConstants.CONSTANT_FALSE ); @@ -110,5 +110,9 @@ public static void saveConfiguration( SolrSearchAppConf conf ) for ( int i = 0; i < listAddonBeanNames.size(); i++ ) { DatastoreService.setDataValue( strPrefix + DSKEY_ADDON_BEANS + i , listAddonBeanNames.get( i ) ); } + List listFilterQuery = conf.getListFilterQuery( ); + for ( int i = 0; i < listFilterQuery.size(); i++ ) { + DatastoreService.setDataValue( strPrefix + DSKEY_FQ_LIST + i , listFilterQuery.get( i ) ); + } } } diff --git a/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java b/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java index 892f76d..4efce79 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java @@ -284,22 +284,13 @@ public static Map getSearchResultModel(HttpServletRequest reques // } // } } - facetQuery = new String[facetQueryTmp.size()]; - facetQuery = facetQueryTmp.toArray(facetQuery); - - if ( StringUtils.isNotBlank( conf.getFilterQuery( ) ) ) - { - int nNewLength = ( facetQuery == null ) ? 1 : ( facetQuery.length + 1 ); - String[] newFacetQuery = new String[nNewLength]; - - for ( int i = 0; i < ( nNewLength - 1 ); i++ ) - { - newFacetQuery[i] = facetQuery[i]; - } - - newFacetQuery[newFacetQuery.length - 1] = conf.getFilterQuery( ); - facetQuery = newFacetQuery; - } + + if ( !conf.getListFilterQuery( ).isEmpty( ) ) + { + facetQueryTmp.addAll( conf.getListFilterQuery( ) ); + } + facetQuery = new String[ facetQueryTmp.size( ) ]; + facetQuery = facetQueryTmp.toArray( facetQuery ); boolean bEncodeUri = Boolean.parseBoolean(AppPropertiesService.getProperty(PROPERTY_ENCODE_URI, Boolean.toString(DEFAULT_ENCODE_URI)));