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)));