配置环境
-
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的配置文件
注:存放索引文件所在的位置
步骤一:安装Tomcat6
tomcat的安装可以通过apt-get完成
步骤二:配置Solr
1. 解压apache-solr-xxx.zip,存放在家目录下在java_app文件夹中,此处命名为apache-solr,将example/webapps下的solr.war拷贝到example/solr目录下,
2. 添加sorl.xml
进入/var/lib/tomcat6/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
- 修改<dataDir>${solr.data.dir:./solr/data}</dataDir>为<dataDir>${solr.data.dir:$INDEX_HOME
}</dataDir>
sudo chown –R tomcat6:tomcat6 solr
4. 验证配置
-
重启Apache,
访问localhost:8080/solr,如果能正常访问solr的页面,证明之前的配置都正常。
i. 到$SOLR_HOME/exampledocs目录下,执行以下命令为solr.xml文件建立索引
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. 获得中文分词包IKAnalyzer3.2.8.jar,并拷贝到$TOMCAT_HOME/webapps/solr/WEB-INF/lib中,并修改其拥有者和拥有组为tomcat6
7. 验证中文分词功能,在solr.xml中增加中文,然后搜索该词,过程同第5步。
步骤三:add
sunspot support to Rails
1. 修改gemfile,增加一行内容
gem 'sunspot_rails'
然后执行
bundle install
2. 生成sunspot配置文件,在Rails项目中执行以下命令:
rails generate sunspot_rails:install
3. 修改sunspot.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类为例进行说明
-
为simpleRecord编写适配器,新增一个SunspotHelper模块,编写两个适配器类
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
-
将~/.rvm/gems/ruby-1.9.2-p180/gems/sunspot-1.2.0/solr/solr/conf下的schema.xml文件拷贝到$SOLR_HOME/conf下替换掉原来的schema.xml,并按上一步中的第5点配置中文分词功能。
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 ...
配置成功。
分享到:
相关推荐
Figaro就是这样一款工具,它为Rails应用程序提供了一个简单的方式来管理这些配置,使得环境变量的设置更加方便且易于维护。 Figaro的核心功能是将敏感的配置信息(如数据库密码、API密钥等)从代码库中分离出来,以...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
当这两者结合时,便诞生了bhl_rails_solr项目,它为Rails应用提供了与Solr集成的便捷方式。本文将围绕"bhl_rails_solr-源码.rar"这一主题,深入剖析其内部机制,帮助开发者理解如何在Rails应用中有效利用Solr进行...
Ruby on Rails 应用程序,为 OpenStreetMap 网站和 API 提供支持。这是 The Rails Port,一个为 OpenStreetMap 网站和 API 提供支持的 Ruby on Rails 应用程序。 该软件也被称为“openstreetmap-website”。网站,...
一个Rails应用程序,为DIY小型内容分发网络CDN提供支持
rails-perftest, 测试和配置你的Rails 应用程序 性能测试 Rails 应用程序本指南介绍了 Ruby on Rails 应用程序性能测试的各种方法。阅读本指南后,你将知道:各种类型的基准测试和分析度量。如何生成性能和基准测试...
Rails,全称为Ruby on Rails,是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它基于Ruby编程语言。Rails遵循MVC(模型-视图-控制器)架构模式,使得开发者能够高效地构建功能丰富的动态网站。在Rails...
rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...
"Rails Erd"是一个Ruby gem,专门用于为Rails应用程序自动生成ERD,使得数据库设计和管理变得更加简单和直观。这个工具是由Voormedia开发的,版本号为0eb4577。 ERD是数据库设计的基础,它通过图形化方式展示了各个...
webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。... web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中的工具。它很乐
meta-tags, 用于 Ruby on Rails 应用程序的搜索引擎优化( SEO ) 元标记:使你的Rails 应用程序搜索引擎友好的gem 用于 Ruby on Rails 应用程序的搜索引擎优化( SEO ) 插件。Rails 上的 rubyMetaTags主分支完全支持 ...
openstreetmap-website, 支持http的Rails 应用程序 Rails 端口" 这是 Rails 端口,它是支持网站和API的Ruby on Rails 应用程序。 软件也称为"openstreetmap网站"。这里存储库包括:该网站,包括用户帐户,日记条目,...
在Ruby on Rails应用程序中,服务器时间标头是一个重要的性能监控工具。它允许开发者了解服务器处理请求所需的时间,从而帮助优化应用程序的性能。Rails框架默认并未开启服务器时间标头,但可以通过一些配置或第三方...
"Documentation - Rails引擎提供文档添加到Rails应用程序的功能"这一标题表明,我们将讨论如何利用Rails引擎为应用程序生成和管理文档。文档对于任何软件项目都至关重要,它能帮助开发者理解代码结构,快速熟悉项目...
使用ENV和单个YAML文件进行简单,对Heroku友好的Rails应用程序配置 注意:如果您使用的是Figaro 0.7或更早版本,请参考或到Figaro 1.0。 费加罗为何存在? Figaro的编写旨在简化安全配置Rails应用程序的过程。 ...
passengerpane, Mac OS X 偏好设置窗格,用于轻松配置带有乘客的Rails 应用程序 PassengerPaneMac OS X 系统偏好设置面板,可以帮助快速设置带有Phusion乘客的Rails 应用程序。功能包括:拖放支持管理主机名而不弄乱...
【Ruby-Slackathon在Rails应用程序中构建slack集成的简单方法】 在当今的协作环境中,Slack已经成为团队沟通的重要工具。通过将Slack与Rails应用程序集成,开发者可以创建自定义的自动化工作流程,提高团队效率并...
capistrano-3-rails-template, 使用 Capistrano 3部署 Rails 应用程序的模板 Capistrano 3 Rails 配置概述这是部署带有的Ruby on Rails 应用程序的示例配置,包括使用Unicorn和Sidekiq后台员工部署的零停机。...
在Ruby on Rails开发的世界里,将Web应用程序打包成可执行文件是一个常见的需求,尤其是在需要部署到没有Ruby环境的服务器或者希望提供用户一个独立运行的软件时。标题中的“终于知道怎么把rails Web程序打包成可...