Changeset 29711 for gs3-extensions


Ignore:
Timestamp:
2015-02-03T21:57:53+13:00 (9 years ago)
Author:
ak19
Message:

Moving from using the solr jetty server to solr using the GS3 tomcat server. Now localhost:8383/solr hosts the solr server RESTful pages. Changes: 1. Minor changes to GS3 build.xml. 2. GLI no longer does the temporary stopping of the GS3 server, launching jetty server for building a solr collection, stopping jetty, restarting GS3 tomcat server. GLI leaves the GS3 server running. 3. The main changes are to ext/solr. The ext/solr/gs3-setup.sh sets the new SOLR_PORT and SOLR_HOST variables read from the GS3 build.properties, as the jetty port and host variables are no longer used. ext/solr/build.xml now puts the solr war file into tomcat's webapps, as well as helper libraries necessary (xalan related); a solr.xml context file is created from a template file and placed into tomcat's conf/Catalina/localhost; additional solr jar files are copied into tomcat/lib, as well as the slf4j bridge being copied into GS3/web/WEB-INF/lib; the solr perl code has been changed to use the new RESTful URLs and particularly to work with solr running off the GS3 tomcat server, or stop and start it as required, rather than working with (or stopping and starting) the solr jetty server. A new run_solr_server.pl executable script runs the tomcat server rather than the jetty server; major changes to the Java Solr code to no longer work with the EmbeddedSolrServer (which caused a conflict when the index is accessed by solr jetty server upon rebuild of solr collections), our solr Java code now uses HttpSolrServer to contact the solr servlet running off tomcat. 5. Still a bug: when search results go over a page after rebuilding a solr collection in GLI against a running GS3 server, the 2nd page of search results aren't present and things break. But if the server is not running, solr collections rebuild fine, so the changes do everything that GS3.06 did and more.

Location:
gs3-extensions/solr/trunk/src
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • gs3-extensions/solr/trunk/src/build.xml

    r29707 r29711  
    99
    1010  <!-- greenstone3 paths -->
    11   <property name="web.home" value="${basedir}/../../web"/>
     11  <!-- http://stackoverflow.com/questions/3136849/how-do-i-convert-a-relative-path-in-ant-to-an-absolute-path
     12    http://stackoverflow.com/questions/8295860/pathconvert-with-relative-file-names -->
     13  <property name="web.home" location="${basedir}/../../web"/> <!-- location property creates an absolute path -->
    1214  <property name="localsite.collectdir" value="${web.home}/sites/localsite/collect"/>
    1315  <property name="web.classesdir" value="${web.home}/WEB-INF/classes"/>
    1416  <property name="web.libdir" value="${web.home}/WEB-INF/lib"/> 
    1517  <property name="web.extdir" value="${web.home}/ext/solr"/>
     18
     19  <property name="tomcat.dir" location="${basedir}/../../packages/tomcat"/> <!-- location property creates an absolute path -->
     20  <property name="tomcat.lib.dir" value="${tomcat.dir}/lib"/>
     21  <property name="tomcat.context.dir" value="${tomcat.dir}/conf/Catalina/localhost"/>
    1622
    1723  <path id="compile.classpath">
     
    2531      <include name="*.jar"/>
    2632    </fileset>
     33    <pathelement location="lib/servlet-api-3.0.jar"/>
    2734  </path>
     35
    2836
    2937  <!-- FILE LISTINGS.-->
     
    149157    <echo>Unzipping pre-built index</echo>
    150158    <unzip dest="${localsite.collectdir}/solr-jdbm-demo" src="${localsite.collectdir}/solr-jdbm-demo/index.zip" />
    151 
    152 
    153   </target>
    154  
     159  </target>
     160
     161  <!-- Setting up solr to work with tomcat server instead of jetty server -->
     162  <target name="solr-for-tomcat" description="Helper-target: setting up solr to work tomcat">
     163   
     164    <echo>Copying solr jars needed for running solr with tomcat: ${basedir}/lib/ext</echo> 
     165    <copy todir="${tomcat.lib.dir}">     
     166      <fileset dir="lib/ext">
     167    <include name="*.jar"/>
     168      </fileset>
     169    </copy>
     170   
     171    <!-- slf4j and commons logging bridge needed to avoid exception about incompatibility in tomcat log files-->
     172    <echo>Copying ${basedir}/lib/ext/jcl-over-slf4j-1.6.6.jar again to ${web.libdir}</echo>
     173    <copy todir="${web.libdir}">
     174      <filelist id="logging-bridge" dir="lib/ext" files="jcl-over-slf4j-1.6.6.jar"/>
     175    </copy>
     176
     177    <echo>Moving xalan related jar files from  ${web.libdir} to ${tomcat.lib.dir}, to share with solr</echo>
     178    <move todir="${tomcat.lib.dir}">
     179      <filelist dir="${web.libdir}">
     180    <file name="xalan.jar"/>
     181    <file name="xercesImpl.jar"/>
     182    <file name="xml-apis.jar"/>
     183    <file name="xsltc.jar"/>
     184    <file name="serializer.jar"/>
     185      </filelist>
     186    </move>
     187   
     188    <echo>Copying ${basedir}/webapps/solr.war to ${tomcat.dir}/webapps</echo>
     189    <copy todir="${tomcat.dir}/webapps" file="webapps/solr.war" />
     190    <echo>Generating solr context file in ${tomcat.context.dir}</echo>
     191   
     192    <!-- we want unix paths (forward slashes) in the tomcat context file -->
     193    <pathconvert targetos="unix" property="gsdl3.web.home">
     194      <path path="${web.home}"/><!-- creates an absolute path-->
     195    </pathconvert>
     196    <pathconvert targetos="unix" property="tomcat.home">
     197      <path path="${tomcat.dir}"/><!-- creates an absolute path-->
     198    </pathconvert>
     199    <filter token="gsdl3home" value="${gsdl3.web.home}"/>
     200    <filter token="tomcathome" value="${tomcat.home}"/>
     201    <copy file="solr-tomcat-context.xml.in" tofile="${tomcat.context.dir}/solr.xml" filtering="true" overwrite="true"/>
     202
     203  </target> 
    155204
    156205  <!-- copy the content of the web folder (avoiding the top-level .svn directory) -->
     
    165214  </target>
    166215
    167   <target name="add-service" depends="copy-solr-web,copy-files,compile" description="Run this target to setup the Solr extension for Greenstone3" />
    168 
    169  
    170   <target name="del-service"
    171     description="Run this target to unset the Solr extension for Greenstone3"> 
    172    
     216
     217  <target name="add-service" depends="copy-solr-web,copy-files,solr-for-tomcat,compile" description="Run this target to setup the Solr extension for Greenstone3" />
     218 
     219  <target name="del-service" depends="del-files,del-solr-for-tomcat"
     220    description="Run this target to unset the Solr extension for Greenstone3" />
     221
     222
     223  <target name="del-files" description="Helper-target to delete files for del-service target">
    173224    <!-- failonerror is set to false in case some files don't exist
    174225    and can't be deleted therefore -->
    175    
    176 
    177 
    178     <echo/>
    179     <echo>Removing from  gsdl3 properties area: properties/${property-files}</echo>
     226
     227    <echo/>
     228    <echo>Removing from gsdl3 properties area: properties/${property-files}</echo>
    180229    <delete failonerror="false">
    181230          <filelist dir="${web.classesdir}" files="${property-files}"/>
     
    194243    <echo/>
    195244    <echo>Removing solr-jdbm-demo collection from: ${localsite.collectdir}</echo>
    196     <delete failonerror="false" includeEmptyDirs="true" dir="${localsite.collectcdir}/solr-jdbm-demo"/>
    197    
     245    <delete failonerror="false" includeEmptyDirs="true" dir="${localsite.collectcdir}/solr-jdbm-demo"/>
     246
     247  </target>
     248 
     249  <target name="del-solr-for-tomcat" description="Helper-target to remove files for getting solr to work with tomcat">
     250
     251    <echo/>
     252    <echo>Removing solr modifications to tomcat: context file, solr.war and deployed version, jar files</echo>
     253
     254    <!-- Actually need to ensure tomcat is not running at this point
     255         But if solr.war is deleted first, it can't be re-deployed when deleting the solr folder subsequently
     256      -->
     257    <delete failonerror="false" file="${tomcat.dir}/webapps/solr.war"/>
     258    <delete failonerror="false" includeEmptyDirs="true" dir="${tomcat.dir}/webapps/solr"/>
     259
     260    <delete failonerror="false" file="${tomcat.context.dir}/solr.xml"/>
     261
     262    <!-- delete all the jar files in tomcat/lib that were copied from ext/solr/lib/ext
     263         which are all the jar files that are present in both tomcat/lib and ext/solr/lib/ext
     264         https://ant.apache.org/manual/Types/selectors.html#presentselect -->
     265    <delete failonerror="false">     
     266      <fileset dir="${tomcat.lib.dir}" includes="**/*.jar">     
     267        <present present="both" targetdir="lib/ext"/>
     268      </fileset>
     269    </delete>
     270
     271    <!-- remove logging bridge jar file that was added into greenstone 3 web lib area -->
     272    <delete failonerror="false" file="${web.libdir}/jcl-over-slf4j-1.6.6.jar"/>
     273
     274    <!-- moving shared xalan related jar files back from tomcat lib to GS3 web lib -->
     275    <move todir="${web.libdir}">
     276      <filelist dir="${tomcat.lib.dir}">
     277        <file name="xalan.jar"/>
     278        <file name="xercesImpl.jar"/>
     279        <file name="xml-apis.jar"/>
     280        <file name="xsltc.jar"/>
     281        <file name="serializer.jar"/>
     282      </filelist>
     283    </move>
     284
     285    <!--http://stackoverflow.com/questions/2140637/how-do-i-build-a-list-of-file-names-->
    198286  </target>
    199287 
  • gs3-extensions/solr/trunk/src/gs3-setup.sh

    r24485 r29711  
    1111#--
    1212
     13# If using tomcat, read the tomcat host and port from the toplevel GS3 build.properties
     14# http://en.kioskea.net/faq/1757-how-to-read-a-file-line-by-line
     15# The following sets the field separator IFS to the = sign, then reads the file line by
     16# line, setting propname and propval (which are fields separated by '=') for each line read
     17SOLR_PORT=8983
     18SOLR_HOST=localhost
     19file=$GSDL3SRCHOME/build.properties
     20while IFS== read propname propval; do
     21    if [ "x$propname" = "xtomcat.server" ] ; then
     22    SOLR_HOST=$propval
     23    fi
     24    if [ "x$propname" = "xtomcat.port" ] ; then
     25    SOLR_PORT=$propval
     26    fi         
     27done < $file
     28
     29echo "Tomcat port: $SOLR_PORT"
     30echo "Tomcat host: $SOLR_HOST"
     31
     32# If using jetty:
    1333# The port Jetty runs on:
    1434SOLR_JETTY_PORT=8983
     
    6181  export SOLR_JETTY_PORT
    6282  export JETTY_STOP_PORT
     83  export SOLR_PORT
     84  export SOLR_HOST
    6385  first_time=1
    6486
  • gs3-extensions/solr/trunk/src/perllib/solrbuilder.pm

    r29338 r29711  
    676676
    677677
    678     # Also need to stop the Solr/jetty server if it was explicitly started
     678    # Also need to stop the Solr server (be it tomcat or jetty) if it was explicitly started
    679679    # in pre_build_indexes()
    680680   
  • gs3-extensions/solr/trunk/src/perllib/solrutil.pm

    r25846 r29711  
    7272    my $full_post_jar   = solrutil::locate_file($search_path,$post_jar);
    7373   
    74     my $jetty_port = $ENV{'SOLR_JETTY_PORT'};
     74    my $server_port = $ENV{'SOLR_PORT'}; # tomcat
     75    my $server_host = $ENV{'SOLR_HOST'};
    7576   
    7677    # Now run solr-post command
    77     my $post_props = "-Durl=http://localhost:$jetty_port/solr/$core/update";
     78    my $post_props = "-Durl=http://$server_host:$server_port/solr/$core/update";
    7879    $post_props .= " -Ddata=stdin";
    7980    $post_props .= " -Dcommit=yes";
  • gs3-extensions/solr/trunk/src/src/java/org/greenstone/gsdl3/service/GS2SolrSearch.java

    r29710 r29711  
    2020
    2121// Greenstone classes
    22 import java.io.File;
    2322import java.util.ArrayList;
    24 import java.util.Collection;
    2523import java.util.HashMap;
    2624import java.util.Iterator;
    2725import java.util.List;
    2826import java.util.Map;
     27import java.util.Properties;
    2928import java.util.Set;
    3029import java.util.Vector;
    3130
    3231import org.apache.log4j.Logger;
    33 import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
     32import org.apache.solr.client.solrj.SolrServer;
     33import org.apache.solr.client.solrj.impl.HttpSolrServer;
    3434import org.apache.solr.client.solrj.response.FacetField;
    35 import org.apache.solr.core.CoreContainer;
    36 import org.apache.solr.core.SolrCore;
    3735import org.greenstone.LuceneWrapper4.SharedSoleneQueryResult;
    3836import org.greenstone.gsdl3.util.FacetWrapper;
     
    5048{
    5149
     50  public static final String SOLR_SERVLET_SUFFIX = "/solr";
    5251  protected static final String SORT_ORDER_PARAM = "sortOrder";
    5352  protected static final String SORT_ORDER_DESCENDING = "1";
     
    5655    static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.GS2SolrSearch.class.getName());
    5756
    58     static protected CoreContainer all_solr_cores = null;
    59 
    60     protected HashMap solr_core_cache;
     57        protected String solr_servlet_base_url;
     58    protected HashMap<String, SolrServer> solr_core_cache;
    6159    protected SolrQueryWrapper solr_src = null;
    6260
     
    7270        // based on 'level' parameter passed in to 'setUpQueryer()'
    7371
    74         solr_core_cache = new HashMap();
    75 
    76         if (all_solr_cores == null)
    77         {
    78             // Share one CoreContainer across all sites/collections
    79             try
    80             {
    81                 String gsdl3_writablehome = GlobalProperties.getGSDL3WritableHome();
    82                 String solr_ext_name = GlobalProperties.getProperty("gsdlext.solr.dirname", "solr");
    83 
    84                 String solr_home_str = GSFile.extHome(gsdl3_writablehome, solr_ext_name);
    85 
    86                 all_solr_cores = new CoreContainer(solr_home_str);
    87             }
    88             catch (Exception e)
    89             {
    90                 e.printStackTrace();
    91             }
    92         }
    93 
    94         this.solr_src = new SolrQueryWrapper();
     72        solr_core_cache = new HashMap<String, SolrServer>();
     73
     74        this.solr_src = new SolrQueryWrapper();     
     75
     76        // Create the solr servlet url on GS3's tomcat. By default it's "http://localhost:8383/solr"
     77        // Don't do this in configure(), since the tomcat url will remain unchanged while tomcat is running
     78        try {
     79            Properties globalProperties = new Properties();
     80            globalProperties.load(Class.forName("org.greenstone.util.GlobalProperties").getClassLoader().getResourceAsStream("global.properties"));
     81            String host = globalProperties.getProperty("tomcat.server", "localhost");
     82            String port = globalProperties.getProperty("tomcat.port", "8383");
     83            String protocol = globalProperties.getProperty("tomcat.protocol", "http");
     84           
     85            String portStr = port.equals("80") ? "" : ":"+port;
     86            solr_servlet_base_url = protocol+"://"+host+portStr+SOLR_SERVLET_SUFFIX;
     87        } catch(Exception e) {
     88            logger.error("Error reading greenstone's tomcat solr server properties from global.properties", e);
     89        }
    9590    }
    9691
     
    10095        boolean success = super.configure(info, extra_info);
    10196
    102         // 1. Make the CoreContainer reload solr.xml
    103         // This is particularly needed for when activate.pl is executed during
    104         // a running GS3 server. At that point, the solr collection is reactivated and
    105         // we need to tell Greenstone that the solr index has changed. This requires
    106         // the CoreContainer to reload the solr.xml file, and it all works again.
    107 
    108         solr_core_cache.clear(); // clear the map of solr cores for this collection added to the map upon querying
    109        
    110         // Reload the updated solr.xml into the CoreContainer
    111         // (Doing an all_solr_cores.shutdown() first doesn't seem to be required)
    112         try {   
    113             String solr_home_str = all_solr_cores.getSolrHome();
    114             File solr_home = new File(solr_home_str);
    115             File solr_xml = new File( solr_home,"solr.xml" );
    116            
    117             //all_solr_cores.load(solr_home_str,solr_xml);
    118             all_solr_cores.load();
    119 
    120         } catch (Exception e) {
    121             logger.error("Exception in GS2SolrSearch.configure(): " + e.getMessage());
    122             e.printStackTrace();
    123             return false;
    124         }
    125        
     97        // clear the map of solr cores for this collection added to the map upon querying
     98        solr_core_cache.clear();
     99
    126100        if(!success) {
    127101            return false;
    128102        }
    129103       
    130         // 2. Setting up facets
     104        // Setting up facets
    131105        // TODO - get these from build config, in case some haven't built
    132106        Element searchElem = (Element) GSXML.getChildByTagName(extra_info, GSXML.SEARCH_ELEM);
     
    170144        this.solr_src.cleanUp();
    171145
    172 
    173         // 1. clear the map keeping track of the solrcores' EmbeddedSolrServers in this collection
     146        // clear the map keeping track of the SolrServers in this collection
    174147        solr_core_cache.clear();
    175 
    176         // 2. For solr 4.7.2., GLI (and ant stop from cmd) is unable to shutdown the tomcat server fully,
    177         // IF any collection has been previewed AND if there are any solr collections in the collect folder.
    178         // This is because although the GS3 server seems to have stopped running at this stage, running a
    179         // `ps aux | grep tomcat` reveals that some part of tomcat is still running. It seems to be still
    180         // holding on to the cores. Doing an all_cores.shutdown() here, stops GS3 from hanging on to the cores
    181         // while still preserving the core desciptions in web/ext/solr.xml as needed when restarting the GS3 server.
    182 
    183         // Need GS3 server (tomcat) to release the cores, else a part of tomcat is still running in the background
    184         // on ant stop, holding a lock on the cores. Doing shutdown() preserves core descriptions in solr.xml
    185         all_solr_cores.shutdown();
    186         all_solr_cores = null;
    187148    }
    188149
     
    356317        // solr-core, (caching the result in 'solr_core_cache')
    357318        String core_name = getCollectionCoreNamePrefix() + "-" + index;
    358 
    359         EmbeddedSolrServer solr_core = null;
     319       
     320        SolrServer solr_core = null;
    360321
    361322        if (!solr_core_cache.containsKey(core_name))
    362         {
    363             solr_core = new EmbeddedSolrServer(all_solr_cores, core_name);
    364 
    365             solr_core_cache.put(core_name, solr_core);
     323        {           
     324            solr_core = new HttpSolrServer(this.solr_servlet_base_url+"/"+core_name);
     325            solr_core_cache.put(core_name, solr_core);         
    366326        }
    367327        else
    368328        {
    369             solr_core = (EmbeddedSolrServer) solr_core_cache.get(core_name);
     329            solr_core = solr_core_cache.get(core_name);
    370330        }
    371331
     
    381341        try
    382342        {
    383             //SharedSoleneQueryResult sqr = this.solr_src.runQuery(query);
    384343            SharedSoleneQueryResult sqr = this.solr_src.runQuery(query);
    385344
  • gs3-extensions/solr/trunk/src/src/java/org/greenstone/gsdl3/service/SolrSearch.java

    r29710 r29711  
    1313import org.w3c.dom.NodeList;
    1414
     15import java.util.ArrayList;
    1516import java.util.HashMap;
    16 import java.util.ArrayList;
    17 import java.util.Iterator;
     17import java.util.Properties;
    1818
    19 
     19import org.apache.log4j.Logger;
    2020import org.apache.solr.client.solrj.SolrQuery;
    2121import org.apache.solr.client.solrj.SolrServer;
    2222import org.apache.solr.client.solrj.SolrServerException;
    23 import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
     23import org.apache.solr.client.solrj.impl.HttpSolrServer;
    2424import org.apache.solr.client.solrj.response.QueryResponse;
    2525import org.apache.solr.common.SolrDocument;
    2626import org.apache.solr.common.SolrDocumentList;
    27 import org.apache.solr.common.params.ModifiableSolrParams;
    28 import org.apache.solr.common.params.SolrParams;
    2927import org.apache.solr.common.util.NamedList;
    3028import org.apache.solr.servlet.SolrRequestParsers;
    31 import org.apache.solr.core.CoreContainer;
    32 import org.apache.solr.core.SolrCore;
    33 
    34 import java.io.File;
    35 import java.util.Collection;
    36 
    37 
    38 import org.apache.log4j.*;
    3929
    4030
    4131public class SolrSearch extends LuceneSearch {
    4232
     33    public static final String SOLR_SERVLET_SUFFIX = "/solr";
    4334    static Logger logger = Logger.getLogger(org.greenstone.gsdl3.service.SolrSearch.class.getName());
    4435
    45     static protected CoreContainer solr_cores = null;
    46     protected HashMap solr_server;
     36    protected String solr_servlet_base_url;
     37    protected HashMap<String, SolrServer> solr_server;
    4738
    4839    public SolrSearch()
    4940    {
    50     solr_server = new HashMap();
     41    solr_server = new HashMap<String, SolrServer>();   
    5142
    52     if (solr_cores == null) {
    53         // Share one CoreContainer across all sites/collections
    54         try {
    55        
    56         String gsdl3_home = GlobalProperties.getGSDL3Home();
    57         String solr_ext_name = GlobalProperties.getProperty("gsdlext.solr.dirname","solr");
    58        
    59         String solr_home_str = GSFile.extHome(gsdl3_home,solr_ext_name);
    60 
    61         solr_cores = new CoreContainer(solr_home_str);
    62         }
    63         catch (Exception e) {
    64         e.printStackTrace();
    65         }
     43    // Create the solr servlet url on GS3's tomcat. By default it's "http://localhost:8383/solr"
     44    // Don't do this in configure(), since the tomcat url will remain unchanged while tomcat is running
     45    try {
     46        Properties globalProperties = new Properties();
     47        globalProperties.load(Class.forName("org.greenstone.util.GlobalProperties").getClassLoader().getResourceAsStream("global.properties"));
     48        String host = globalProperties.getProperty("tomcat.server", "localhost");
     49        String port = globalProperties.getProperty("tomcat.port", "8383");
     50        String protocol = globalProperties.getProperty("tomcat.protocol", "http");
     51       
     52        String portStr = port.equals("80") ? "" : ":"+port;
     53        solr_servlet_base_url = protocol+"://"+host+portStr+SOLR_SERVLET_SUFFIX;
     54    } catch(Exception e) {
     55        logger.error("Error reading greenstone's tomcat solr server properties from global.properties", e);
    6656    }
    6757    }
     
    7666    super.cleanUp();
    7767   
    78         // 1. clear the map keeping track of the solrcores' EmbeddedSolrServers in this collection
    79         solr_server.clear();
    80 
    81         // 2. Need GS3 server (tomcat) to release the cores, else a part of tomcat is still running in the background
    82         // on ant stop, holding a lock on the cores. Doing shutdown() preserves core descriptions in solr.xml
    83         solr_cores.shutdown();
    84         solr_cores = null;
     68    // clear the map keeping track of the SolrServers in this collection
     69    solr_server.clear();
    8570    }
    8671
     
    8873    // adjusted configure to bring it up to speed with changes in GS2SolrSearch (for activate.pl) - not yet tested
    8974    public boolean configure(Element info, Element extra_info) {
    90         boolean success = super.configure(info, extra_info);
     75    boolean success = super.configure(info, extra_info);
    9176   
    92         // 1. Make the CoreContainer reload solr.xml
    93         // This is particularly needed for when activate.pl is executed during
    94         // a running GS3 server. At that point, the solr collection is reactivated and
    95         // we need to tell Greenstone that the solr index has changed. This requires
    96         // the CoreContainer to reload the solr.xml file, and it all works again.
    97 
    98         solr_server.clear(); // clear the map of solr cores for this collection added to the map upon querying
    99        
    100         // Reload the updated solr.xml into the CoreContainer
    101         // (Doing a solr_cores.shutdown() first doesn't seem to be required)
    102         try {   
    103             String solr_home_str = solr_cores.getSolrHome();
    104             File solr_home = new File(solr_home_str);
    105             File solr_xml = new File( solr_home,"solr.xml" );
    106            
    107             //solr_cores.load(solr_home_str,solr_xml);
    108             solr_cores.load();
    109         } catch (Exception e) {
    110             logger.error("Exception in SolrSearch.configure(): " + e.getMessage());
    111             e.printStackTrace();
    112             return false;
    113         }
     77    // clear the map of solr cores for this collection added to the map upon querying
     78    solr_server.clear();
     79   
     80    if(!success) {
     81        return false;
     82    }
    11483
    11584    // initialize required number of SolrCores based on values
     
    12392        String core_name = core_name_prefix + "-" + idx_name;
    12493
    125         EmbeddedSolrServer solr_core
    126         = new EmbeddedSolrServer(solr_cores,core_name);
    127 
     94        SolrServer solr_core = new HttpSolrServer(this.solr_servlet_base_url+"/"+core_name);
    12895        solr_server.put(core_name,solr_core);
    12996    }
     97   
    13098
    13199    return success;
     
    165133
    166134        try {
     135       
     136        // Use SolrQuery with HttpSolrServer instead of ModifiableSolrParams,
     137        // see http://stackoverflow.com/questions/13944567/querying-solr-server-using-solrj     
     138        SolrQuery solrParams = new SolrQuery(query_string); // initialised with q url-parameter
     139        //solrparams.setRequestHandler("/select"); // default. Or try "select"
    167140
    168         ModifiableSolrParams solrParams = new ModifiableSolrParams();
    169         solrParams.set("q", query_string);
    170         //solrParams.set("start", start);
    171         //solrParams.set("rows", nbDocuments);
     141        ///solrParams.set("start", start);
     142        ///solrParams.set("rows", nbDocuments);
     143
    172144
    173145        String core_name = getCollectionCoreNamePrefix() + "-" + index;
    174146
    175         EmbeddedSolrServer solr_core = (EmbeddedSolrServer)solr_server.get(core_name);
    176 
     147        // http://stackoverflow.com/questions/17026530/accessing-a-cores-default-handler-through-solrj-using-setquerytype
     148        // default request handler is /select, see http://wiki.apache.org/solr/CoreQueryParameters
     149        SolrServer solr_core = solr_server.get(core_name);
    177150        QueryResponse solrResponse = solr_core.query(solrParams);
    178151
  • gs3-extensions/solr/trunk/src/src/java/org/greenstone/gsdl3/util/SolrQueryWrapper.java

    r29664 r29711  
    241241        }
    242242    } else {
    243         System.err.println("#### Not an EmbeddedSolrServer. This shouldn't happen." + solr_core.getClass());
    244         logger.error("#### Not an EmbeddedSolrServer. This shouldn't happen."  + solr_core.getClass());
     243        System.err.println("#### Not an EmbeddedSolrServer. SolrQueryWrapper.getTerms() not yet implemented for " + solr_core.getClass());
     244        logger.error("#### Not an EmbeddedSolrServer. SolrQueryWrapper.getTerms() not yet implemented for "  + solr_core.getClass());
    245245    }
    246246   
Note: See TracChangeset for help on using the changeset viewer.