GithubHelp home page GithubHelp logo

finna-solr's Introduction

Finna Solr

Solr for Finna (VuFind)

This is the Finna VuFind configuration for Solr. Important bits:

  • Solr distribution is installed into vendor directory
  • Solr home (set in solr.in.finna.sh[.sample]) is ./vufind which contains the Finna VuFind core configs
  • The JTS libraries (from https://sourceforge.net/projects/jts-topo-suite/) are added to vendor/server/solr-webapp/webapp/WEB-INF/lib (putting them in vufind/lib doesn't seem to work, probably because of SOLR-4852 and SOLR-6188, and trying workaround still doesn't let JTS load properly):
    • jts
    • jtsio
  • The following libraries are copied to vufind/lib (having them in solrconfig.xml doesn't play nice with dynamic collection management in SolrCloud):
    • vendor/contrib/analysis-extras/lib/icu4j-*.jar
    • vendor/contrib/analysis-extras/lucene-libs/lucene-analyzers-icu-*.jar
  • Raudikko (a pure Java implementation of Voikko) is included for Finnish language processing

Installation

  1. Put the files somewhere

  2. Add user solr

  3. Run ./install_solr.sh

  4. chown the files and directories to solr user

  5. Copy vufind/solr.in.finna.sh.sample to vufind/solr.in.finna.sh and edit as required

  6. Use the following commands to start or stop Solr manually:

     SOLR_INCLUDE=vufind/solr.in.finna.sh vendor/bin/solr start
    
     SOLR_INCLUDE=vufind/solr.in.finna.sh vendor/bin/solr stop
    
  7. To enable startup via system init and management with service command in init-based systems like RHEL 6.x, copy vufind/solr.finna-init-script to file /etc/init.d/solr, make it executable, change the paths in it and execute the following commands:

     chkconfig --add solr
     chkconfig solr on
    
  8. With systemd-based systemd, like CentOS 7, copy vufind/solr.service to /etc/systemd/system/, change paths in it and execute the following commands:

     systemctl daemon-reload
     systemctl enable solr
    
  9. In init-based systems, start and stop Solr with commands:

     service solr start
    
     service solr stop
    
  10. In systemd-based systems, start and stop Solr with commands:

    systemctl start solr
    
    systemctl stop solr
    
  11. Check the logs at vufind/logs for any errors

  12. If running in SolrCloud mode, use a chroot (with external Zookeeper ensemble, not required in development with embedded Zookeeper) and make sure to create the root directory in zkCli:

    zookeeper-x.y.z/bin/zkCli.sh -server 127.0.0.1:2181
    create /solr []
    
  13. Use the following command to add a collection configuration to Zookeeper so that Solr can find it:

    In production when using an external Zookeeper, its address is specified in solr.in.finna.sh, so there is no need to specify it for the command:

    SOLR_INCLUDE=vufind/solr.in.finna.sh vendor/bin/solr zk upconfig -n biblio1 -d vufind/biblio/conf
    

    If you're running SolrCloud with the embedded Zookeeper (for development purposes), you'll need to specify Zookeeper address with the -z parameter (Zookeeper port is Solr's port + 1000):

    SOLR_INCLUDE=vufind/solr.in.finna.sh vendor/bin/solr zk upconfig -z localhost:9983 -n biblio1 -d vufind/biblio/conf
    
  14. Now you can create a new collection that uses the configuration by calling the collections API:

    curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=biblio1&numShards=1&replicationFactor=3&collection.configName=biblio1'
    

    If you need to create a collection on just a single node of a SolrCloud, you can use the placement rules to define the location, e.g.

    curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=biblio1&numShards=1&replicationFactor=1&collection.configName=biblio1&rule=shard:*,host:domain.somewhere'
    

    If you want to have more than one shard per node, use the maxShardsPerNode parameter:

    curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=biblio1&numShards=3&replicationFactor=3&collection.configName=biblio1&maxShardsPerNode=3'
    

    Add a replica to a collection:

    curl 'http://localhost:8983/solr/admin/collections?action=ADDREPLICA&collection=biblio1&shard=shard1&node=domain.somewhere:8983_solr&type=nrt'
    

    Remove a replica from a collection:

    curl 'http://localhost:8983/solr/admin/collections?action=DELETEREPLICA&collection=biblio1&shard=shard1&replica=core_nodeX'
    

    Use an alias to point to the current index version in use. This way you can just point the alias to a new index version when it's ready to use:

    curl 'http://localhost:8983/solr/admin/collections?action=CREATEALIAS&name=biblioprod&collections=biblio1'
    

    If you need to reload a collection e.g. for new configuration to take effect, you can do it using the collections API:

    curl 'http://localhost:8983/solr/admin/collections?action=RELOAD&name=biblio1'
    

    When a collection is no longer needed, remove it using the collections API:

    curl 'http://localhost:8983/solr/admin/collections?action=DELETE&name=biblio1'
    

    To check the SolrCloud status:

    scripts/cluster_status.php
    

    or

    curl 'http://localhost:8983/solr/admin/collections?action=clusterstatus&wt=json' | json_reformat
    

    Full docs for the collections API:https://solr.apache.org/guide/8_11/collections-api.html

  15. To run a second Solr instance:

    scripts/create_instance_dir vufind8984
    
    SOLR_HOME=`pwd`/vufind8984 SOLR_PORT=8984 SOLR_INCLUDE=vufind/solr.in.finna.sh vendor/bin/solr start
    

Update

  1. Pull the changes
  2. Run ./installsolr.sh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.