SimpleDBのRailsアプリケーションに対するsolrサポートの構成
7570 ワード
環境の設定 Server: Ubuntu 10.04 solr version: 1.4.1 sunspot_rails version: 1.2.0 Tomcat6_home:/var/lib/tomcat6 $SOLR_HOME =/home/ubuntu/java_app/apache-solr/example/solr
注意:solr.を保存war,conf/フォルダにsolrを格納するプロファイル $INDEX_HOME =/home/ubuntu/solr/data
注意:索引ファイルが保存されている場所注:本明細書で使用するModelレイヤは、従来のリレーショナル・データベースに対するActiveRecordではなく、SimpleDBに対するSimpleRecord である.
手順1:Tomcat 6のインストール
tomcatのインストールはapt-getで完了できます
ステップ2:Solrの構成
1. 解凍apache-solr-xxx.zip、ホームディレクトリの下にjava_に保存appフォルダでは、apache-solrと名付けられ、example/webappsの下のsolr.warはexample/solrディレクトリにコピーし、
2. sorlを追加します.xml
/var/lib/tomcat 6/conf/Catalina/localhostディレクトリに入り、solrを新規作成します.xml、内容を書きます:
3. インデックスファイルの保存場所を設定するには、$SOLR_を変更する必要があります.HOME/conf/solrconfig.xml修正${solr.data.dir:./solr/data} は${solr.data.dir:$INDEX_HOME} 新規$INDEX_HOMEが表すフォルダ このフォルダを変更する所有者はtomcat 6 です.
4. 構成の検証 Apacheを再起動し、localhost:8080/solrにアクセスし、solrのページに正常にアクセスできれば、以前の構成が正常であることを証明します. インデックス機能が正常であることを確認: i.から$SOLR_へHOME/exampledocsディレクトリでは、以下のコマンドをsolrとして実行します.xmlファイルインデックスの作成
ii. http://localhost:8080/solr/adminバックグラウンド検索インタフェースに「solr」と入力して検索し、インデックスが正しく確立されたことを証明する結果が返されます.
5. 中国語の分詞機能を構成するには、$SOLR_を変更する必要があります.HOME/solr/conf/schema.xml
6.中国語の分詞パッケージIKAnalyzer 3を取得する.2.8.JAr、$TOMCAT_にコピーHOME/webapps/solr/WEB-INF/libで、所有者と所有グループをtomcat 6に変更
7. 中国語の分詞機能を検証するsolr.xmlに中国語を追加し、その語を検索する手順は5ステップと同じです.
ステップ3:add sunspot support to Rails
1.gemfileを変更し、行の内容を追加
2.sunspotプロファイルを生成し、Railsプロジェクトで次のコマンドを実行します.
3. 修正ymlファイル
4. Modelにsolrのサポートを追加するには、ここではPostクラスを例に説明します. simpleRecord用にアダプタを作成し、SunspotHelperモジュールを追加し、2つのアダプタクラス を作成します.
このアダプタ をPostクラスで参照
は~/.rvm/gems/ruby-1.9.2-p 180/gems/sunspot-1.2.0/solr/confでのschema.xmlファイルを$SOLR_にコピーHOME/confで元のschemaを置き換えます.xmlを押して、前のステップの5番目のポイントで中国語の分詞機能を構成します.
5.
にある
rails
を選択
,
可在
console
で実行する必要があります.
注意:solr.を保存war,conf/フォルダにsolrを格納するプロファイル
注意:索引ファイルが保存されている場所
手順1:Tomcat 6のインストール
tomcatのインストールはapt-getで完了できます
ステップ2:Solrの構成
1. 解凍apache-solr-xxx.zip、ホームディレクトリの下にjava_に保存appフォルダでは、apache-solrと名付けられ、example/webappsの下のsolr.warはexample/solrディレクトリにコピーし、
2. sorlを追加します.xml
/var/lib/tomcat 6/conf/Catalina/localhostディレクトリに入り、solrを新規作成します.xml、内容を書きます:
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="$SOLR_HOME/solr.war"
debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String"
value="$SOLR_HOME" override="true"/>
</Context>
3. インデックスファイルの保存場所を設定するには、$SOLR_を変更する必要があります.HOME/conf/solrconfig.xml
sudo chown –R tomcat6:tomcat6 solr
4. 構成の検証
java -Durl=http://localhost:8080/solr/update -jar post.jar solr.xml
ii. http://localhost:8080/solr/adminバックグラウンド検索インタフェースに「solr」と入力して検索し、インデックスが正しく確立されたことを証明する結果が返されます.
5. 中国語の分詞機能を構成するには、$SOLR_を変更する必要があります.HOME/solr/conf/schema.xml
<fieldType name="text" class="solr.TextField" >
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="index">
<tokenizer
class="org.wltea.analyzer.solr.IKTokenizerFactory"
isMaxWordLength="false"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"
protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer
class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"
protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
6.中国語の分詞パッケージIKAnalyzer 3を取得する.2.8.JAr、$TOMCAT_にコピーHOME/webapps/solr/WEB-INF/libで、所有者と所有グループをtomcat 6に変更
7. 中国語の分詞機能を検証するsolr.xmlに中国語を追加し、その語を検索する手順は5ステップと同じです.
ステップ3:add sunspot support to Rails
1.gemfileを変更し、行の内容を追加
gem 'sunspot_rails'
bundle install
2.sunspotプロファイルを生成し、Railsプロジェクトで次のコマンドを実行します.
rails generate sunspot_rails:install
3. 修正ymlファイル
production:
solr:
hostname: localhost
port: 8080
path: '/solr/'
log_level: WARNING
development:
solr:
hostname: localhost
port: 8080
path: '/solr/'
log_level: INFO
test:
solr:
hostname: localhost
port: 8080
path: '/solr/'
log_level: WARNING
4. Modelにsolrのサポートを追加するには、ここではPostクラスを例に説明します.
require 'rubygems'
require 'sunspot'
module SunspotHelper
class InstanceAdapter < Sunspot::Adapters::InstanceAdapter
def id
if(@instance.class.to_s == "String")
@instance
else
@instance.id
end
end
end
class DataAccessor < Sunspot::Adapters::DataAccessor
def load(id)
# clazz: get the class name
@clazz.find(id)
end
end
end
Sunspot::Adapters::InstanceAdapter.register(SunspotHelper::InstanceAdapter, Post, String)
Sunspot::Adapters::DataAccessor.register(SunspotHelper::DataAccessor, Post, String)
Sunspot.setup(Post) do
text :title, :body
time :date, :trie => true
end
def save
super()
Sunspot.index(self)
Sunspot.commit
end
5.
にある
rails
を選択
,
可在
console
で実行する必要があります.
post = Post.first
=> ...
post.save
=> {"responseHeader"=>{"status"=>0, "QTime"=>480}}
search = Sunspot.search(Post) { keywords ' ' }
=> <Sunspot::Search:{:fq=>["type:Post"] …
r = search.results
=> [#<Post:0x961886c ...
の構成に成功しました.