diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..e69d761
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/.project b/.project
new file mode 100644
index 0000000..b7caa78
--- /dev/null
+++ b/.project
@@ -0,0 +1,23 @@
+
+
+ plugin-solr
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..d97c23e
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/java=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2f5cc74
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchEngine.java b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchEngine.java
index 8a123b8..916c521 100644
--- a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchEngine.java
+++ b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchEngine.java
@@ -302,11 +302,18 @@ public SolrFacetedResult getFacetedSearchResults( String strQuery, String [ ] fa
{
for ( String strFacetQuery : facetQueries )
{
- String [ ] myValues = strFacetQuery.split( ":", 2 );
- if ( myValues != null && myValues.length == 2 )
- {
- myValuesList = getFieldArrange( myValues, myValuesList );
- }
+ if ( isComplexFacetQuery(strFacetQuery) )
+ {
+ query.addFilterQuery( strFacetQuery );
+ }
+ else
+ {
+ String [ ] myValues = strFacetQuery.split( ":", 2 );
+ if ( myValues != null && myValues.length == 2 )
+ {
+ myValuesList = getFieldArrange( myValues, myValuesList );
+ }
+ }
}
for ( Entry> entry : myValuesList.entrySet( ) )
@@ -457,7 +464,23 @@ public SolrFacetedResult getFacetedSearchResults( String strQuery, String [ ] fa
return facetedResult;
}
- /**
+ private boolean isComplexFacetQuery(String strFacetQuery)
+ {
+ String[] tabComplexQueryChar = {"(",")","[","]", " OR ", " AND ", "-", "+", "=","^"};
+ if ( strFacetQuery != null )
+ {
+ for ( String strComplexChar : tabComplexQueryChar )
+ {
+ if ( StringUtils.contains(strFacetQuery, strComplexChar) )
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
* @param strValues
* @param strStart
* @param strEnd
@@ -599,11 +622,18 @@ public List getGeolocSearchResults( String strQuery, String [
{
for ( String strFacetQuery : facetQueries )
{
- String [ ] myValues = strFacetQuery.split( ":", 2 );
- if ( myValues != null && myValues.length == 2 )
- {
- myValuesList = getFieldArrange( myValues, myValuesList );
- }
+ if ( isComplexFacetQuery(strFacetQuery) )
+ {
+ query.addFilterQuery( strFacetQuery );
+ }
+ else
+ {
+ String [ ] myValues = strFacetQuery.split( ":", 2 );
+ if ( myValues != null && myValues.length == 2 )
+ {
+ myValuesList = getFieldArrange( myValues, myValuesList );
+ }
+ }
}
for ( Entry> entry : myValuesList.entrySet( ) )