Executando uma única instância de solr com vários aplicativos de trilhos

Testado no Ubuntu Server 14.04

Instalando java e maven3

sudo apt-add-repository ppa:andrei-pozolotin/maven3
sudo
add-apt-repository ppa:webupd8team/java
sudo apt
-get update
sudo apt
-get install maven3 oracle-java8-installer

Instalar solr e conceder permissões de pasta

git clone git://github.com/ksclarke/solr-jetty-maven.git
sudo mv solr
-jetty-maven /opt/solr
sudo chown
-R www-data:www-data /opt/solr

Executando solr como serviço

Antes de qualquer coisa, certifique-se de abrir o arquivo /opt/solr/etc/init.d/solre
alterar o valor da variável SOLR_HOMEna linha 31 para "/opt/solr".
Em seguida, execute os seguintes comandos:

sudo cp etc/init.d/solr /etc/init.d/solr
sudo update
-rc.d -f solr start 80 2 3 4 5 . stop 30 0 1 6 .

Agora, você deve ser capaz de iniciar e interromper o serviço:

sudo service solr start
sudo service solr stop

Configurando o aplicativo Rails

Primeiro, você precisa adicionar sunspotjoias ao Gemfilee executar
bundle install:

# Gemfile
...
gem
'sunspot_rails'
gem
'sunspot_solr'
...

Em seguida, execute o seguinte comando para criar o arquivo na pasta e as configurações específicas do solr:sunspot.yml
config

rake sunspot_rails:install

Certifique-se de adicionar as seguintes entradas ao :.gitignore

# Solr
/solr/data
/solr/default
/solr/development
/solr/pids
/solr/test
/solr/conf/_rest_managed.json
/solr/core.properties

Agora, no lado do servidor, para cada aplicativo, você deve criar um núcleo solr,
que irá separar os índices de cada aplicativo. Para fazer isso, substitua o conteúdo do arquivo por:/opt/solr/src/main/resources/solr/solr.xml

<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
<core name="project01Core" instanceDir="/path_to_project_01/solr" dataDir="default"/>
<core name="projectNCore" instanceDir="/path_to_project_n/solr" dataDir="default"/>
</cores>

</solr>

Agora, abra o arquivo em seu aplicativo rails e altere a propriedade de produção de acordo com a configuração do seu servidor.config/sunspot.yml

production:
solr
:
hostname
: localhost
port
: 8983
path
: /solr/default
log_level
: WARNING

Se você estiver usando o Figaro ou outra gema .env, certifique-se de adicionar a variável .
WEBSOLR_URL='http://localhost:8983/solr/yourCoreName'

Outra solução é criar um inicializador.

# config/initializers/sunspot.rb
if Rails.env.production?
ENV
['WEBSOLR_URL'] = 'http://localhost:8983/solr/yourCoreName'
end

Para fazer outro aplicativo rails usar a mesma instância solr, adicione outra entrada principal no arquivo /opt/solr/src/main/resources/solr/solr.xml, conforme descrito acima, e defina as propriedades de acordo com o caminho do aplicativo.

Boas pesquisas!