From e8aaad2463f0e6f1dff3ac57fcfb4db6bcefad64 Mon Sep 17 00:00:00 2001 From: Felix Dupriez Date: Tue, 7 Sep 2021 10:28:38 +0200 Subject: [PATCH] SOLR-124 : Prise en compte des configurations complexes du champ fq --- .classpath | 33 ++++++++++++ .gitignore | 1 + .project | 23 ++++++++ .settings/org.eclipse.core.resources.prefs | 5 ++ .settings/org.eclipse.jdt.core.prefs | 8 +++ .settings/org.eclipse.m2e.core.prefs | 4 ++ .../solr/business/SolrSearchEngine.java | 52 +++++++++++++++---- 7 files changed, 115 insertions(+), 11 deletions(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs 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( ) )