`

linux rails3安装 thinking sphinx插件

 
阅读更多

rails3

 

1.下载coreseek-4.1-beta.tar.gz,可以在linux上运行下面命令下下载:

wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-4.1-beta.tar.gz

 

2. 进行解压

tar xzvf coreseek-4.1-beta.tar.gz

 

安装时要注意:是否为root权限,有些东西是要root权限才能安装上

3.进入coreseek-4.1-beta目录下

cd mmseg-3.2.14
./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/mmseg
make && make install
#可以去/usr/local 下查看一下是否存在mmseg文件夹,如果没有文件夹,请重新运行一遍上面代码。

 

 

4.注意mmseg文件夹所在的目录与下面代码对应

 cd csft-3.2.14 或者 cd csft-4.0.1 或者 cd csft-4.1
 sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决
 ./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mysql 
 make && make install

 

 

5.sphinx.yml配置 

development: &my_settings 
  enable_star: 1 
  min_prefix_len: 0 
  min_infix_len: 2 
  min_word_len: 1 
  max_results: 70000 
  morphology: none 
  listen: localhost:3312 
  exceptions: RAILS_ROOT/log/sphinx_exception.log 
  #项目目录下log文件夹中新建一个sphinx_exception.log文件,这个路径也修改为对应路径 
  chinese_dictionary: /usr/local/mmseg/etc/ 
  #中文字典路径 
  bin_path: /usr/local/coreseek/bin 
test: 
  <<: *my_settings 
production: 
  <<: *my_settings 

 

6.如果是运行开发 

rake ts:config  
生成一个development.sphinx.conf
 
生产:RAILS_ENV=production rake ts:config
生成一个production.sphinx.conf 

 

注意:
把 listen = localhost:3312  修改为 listen = 127.0.0.1:9312
 
并且所有 charset_type = utf-8 修改为 charset_type = zh_cn.utf-8
并且所有 charset_type = zh_cn.utf-8 下添加 charset_dictpath = /usr/local/mmseg/etc/

 

7.再做索引

rake ts:index INDEX_ONLY=true
生产:RAILS_ENV=production ts:index INDEX_ONLY=true

 

8.thinkingsphinx用法:

实时索引

最常用的就是实时索引,它要求我们在被索引的模型中增加一个属性,名为delta。
ruby script/generate migration AddDeltaToTopic delta:boolean
class AddDeltaToTopic < ActiveRecord::Migration
  def self.up
    add_column :topics, :delta,:boolean, :default => true, :null => false
    add_column :posts, :delta,:boolean, :default => true, :null => false
  end

  def self.down
    remove_column :topics, :delta
    remove_column :posts, :delta
  end
end
  define_index do
    indexes :title,:sortable => true
    indexes first_post.body,:as => :body,:sortable => true
    indexes author
    has :created_at,:updated_at,:forum_id,:digest
    #声明使用实时索引
    set_property :delta => true
  end
  define_index do
    indexes topic(:title),:as => :title ,:sortable => true
    indexes body,:sortable => true
    indexes author
    has :created_at,:updated_at,:forum_id
    #声明使用实时索引
    set_property :delta => true
  end

定时索引
set_property :delta => :datetime, :threshold => 1.hour
一小时索引一次,实际上是重建所有索引,所以注意间隔时间不要短于建立索引的时间。

默认使用updated_at,这样就不用给被索引模型添加delta属性了。

需要结合的重建索引的命令为rake thinking_sphinx:index:delta或rake ts:in:delta

延时索引
set_property :delta => :delayed

 

9.搜索参数与配置方式

多模型查询
ThinkingSphinx::Search.search "term", :classes => [Post, User, Photo, Event]

指定匹配模式
SPH_MATCH_ALL模式,匹配所有查询词(默认模式)。
Topic.search "Ruby Louvre",:match_mode => :all
Topic.search "Louvre" 
PH_MATCH_ANY模式,匹配查询词中的任意一个。
Topic.search "Ruby Louvre", :match_mode => :any
SPH_MATCH_PHRASE模式,将整个查询看作一个词组,要求按顺序完整匹配。
Topic.search "Ruby Louvre", :match_mode => :phrase 

SPH_MATCH_BOOLEAN模式,将查询看作一个布尔表达式。
Topic.search "Ruby | Louvre, :match_mode => :boolean 
SPH_MATCH_EXTENDED模式,将查询看作一个Sphinx内部查询语言的表达式。
User.search "@name pat | @username pat", :match_mode => :extended 
加权
为了提高搜索质量,我们可以对某些模型或字段进行加权,提高它们的优先度。默认都是1
User.search "pat allan", :field_weights => { :alias => 4, :aka => 2 }
ThinkingSphinx::Search.search "pat", :index_weights => { User => 10 }

 

 

10.怎么指定model所对应的表,以及model索引写法

#encoding: utf-8
class Product < ActiveRecord::Base
  set_table_name "product"  #设定model所对应的表,可以是复数或单数

  define_index do 
    indexes :name, :sortable=>true   ##索引的字段,如果其他字段也要索引,就重新写一句 
    indexes product_type.Title, :as => :product_type_title  #表关联索引
    indexes :StartCity, :sortable=>true
    has :Sort, :ShowStatus   #搜索时有条件,必须要添加到has里
    has pinstances.comment_num, :as => :pinstance_comment_nums,:type=>:integer
    has pinstances.mall.grade,:as => :mall_grade,:type=>:integer
    #has :updated_at 
    set_property :delta => true    ##代码实时索引,并且表中要有delta字段 
    #set_property :delta => :datetime, :threshold => 1.hour
  end
  
 
end

 

11.搜索里的参数

Product.search key,    :page => page,
                       :per_page => per_page,
                       :order => order,
                       :with => search_params,
                       :star => true, 
                       :match_mode => :extended2, 
                       :field_weights => { :brand_name => 4,:brand_synonym => 3, :code => 4, :full_names =>2},
                       :sort_mode => :extended

 

 

分享到:
评论

相关推荐

    rails3 和 thinking_sphinx安装

    总结一下,Rails3 和 Thinking_Sphinx 的集成涉及安装 Sphinx、配置 Thinking_Sphinx、定义索引、构建索引、启动搜索守护进程以及在应用中使用搜索方法。通过这种方式,你可以为你的 Rails 应用程序引入强大的全文...

    thinking-sphinx, activerecord/Rails的Sphinx插件.zip

    thinking-sphinx, activerecord/Rails的Sphinx插件 ThinkingThinking是将ActiveRecord连接到Sphinx完整文本搜索工具的库,并与 Rails ( 但也适用于其他 ruby 网络框架) 紧密集成。 当前版本为 v3.4.2.插件升级升级时...

    linux-在Ubuntu服务器上安装Rails生产环境的脚本

    3. **数据库设置**:Rails应用通常需要与数据库系统(如MySQL或PostgreSQL)集成。例如,对于PostgreSQL,需要先安装数据库软件及其开发库: ```bash sudo apt-get install -y postgresql postgresql-contrib ...

    Ruby-ThinkingSphinxActiveRecordRails的Sphinx全文搜索插件

    Thinking Sphinx是Ruby on Rails应用中的一款Sphinx全文搜索引擎插件,由Pat Allan创建。它允许开发者轻松地在Rails应用中集成Sphinx,实现快速、高效的全文检索功能。Sphinx是一个开源的、高性能的全文搜索引擎,常...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Thinking-Sphinx:ActiveRecordRails的Sphinx插件

    `Thinking-Sphinx` 是一个针对 `Ruby on Rails` 应用程序的全文搜索引擎插件,它利用 `Sphinx` 这个高性能、功能强大的搜索服务器来增强应用的搜索功能。`Sphinx` 本身是一个独立的搜索引擎,它提供高效、精确的全文...

    rails 的安装

    3. **安装Rails**: 安装Rails本身非常简单,只需在终端输入 `gem install rails`,这将会下载并安装最新版本的Rails。 4. **验证Rails安装**: 安装完成后,你可以通过运行 `rails -v` 来检查Rails是否已正确...

    centOS Rails3环境搭建

    - **插件安装**:使用Rails命令行工具安装插件: ```bash rails plugin install https://.../... ``` #### 四、其他常用工具 ##### 9. 安装Gem依赖 安装必要的Gem依赖,例如`execjs`和`therubyracer`: ```...

    教学级Ruby On Rails 手动安装.pdf

    - **RubyGems**:作为Ruby的包管理工具,用于安装Rails及各种插件。 - **Rake**:用于自动化任务的构建工具,Rails项目中常用于执行特定任务。 - **Rails**:核心框架,本例中采用Rails 2.1.0。 - **数据库**:可选...

    用于ActiveRecord / Rails的Sphinx插件-Ruby开发

    Thought Sphinx Thinking Sphinx是一个用于将ActiveRecord连接到Sphinx全文搜索工具的库,并且与Rails紧密集成(但也可以与其他Ruby Web框架一起使用)。 当前版本是v3.2.0。 Thought Sphinx Thinking Sphinx是一个...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    **知识点3:Mongrel安装** Mongrel是Rails官方推荐的轻量级Web服务器之一。下载Mongrel 1.1.4版本,并根据系统环境进行安装。安装Mongrel服务器之后,还需要安装几个必备的gem插件,如`gem plugin`、`daemons`、`...

    rails3.1安装与mysql配置 windows

    标题 "rails3.1安装与mysql配置 windows" 涉及到的是在Windows操作系统上安装Ruby on Rails 3.1框架并配置MySQL数据库的过程。这是一个关键的开发环境设置步骤,对于使用Rails进行Web开发的程序员来说至关重要。Ruby...

    Rails的自动完成分页插件

    为了在Rails应用中整合这些功能,开发者需要在Gemfile中添加对应的插件,然后运行`bundle install`安装。接着,在控制器中配置必要的逻辑,比如处理自动完成的查询、文件上传的接收和保存,以及分页的设置。在视图层...

    Ruby on Rails安装包全集(Linux)

    在Linux环境下安装Ruby on Rails需要一系列的依赖包和步骤,本资源包提供了所需的所有组件,帮助用户在Linux系统上顺利构建RoR开发环境。 1. **readline-5.1.tar.gz**: 这是Readline库的源代码包,它提供了一种交互...

    [Rails 常用插件简介]CRUD Generator 2

    **Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...

    rails 2.0.2 分页 需另外下载插件

    然后运行`bundle install`命令来安装插件。 **3. 使用will_paginate** 安装完成后,你需要在模型、控制器和视图中进行相应的配置。 - **在模型中**:无需特别配置,只要确保你的模型是基于ActiveRecord的,will_...

    Ruby on Rails插件

    安装Rails插件通常使用内置的`script/plugin`工具,它支持多种命令如`discover`、`source`、`unsource`、`sources`等。`discover`命令会自动查找插件的源,而`source`和`unsource`则用于管理插件仓库URL。`install`...

    Linux系统平台上安装和配置Ruby on Rails

    在Linux系统上安装和配置Ruby on Rails是一个常见的任务,特别是在开发Web应用程序时。Ruby on Rails(RoR)是一个基于Ruby语言的开源Web应用框架,它遵循模型-视图-控制器(MVC)架构模式,强调简洁和生产力。在...

    Rails3常用命令行命令

    Rails3还支持安装插件,可以通过以下命令将插件添加到项目中: ```bash rails plugin install https://..../..git ``` 插件会被安装到`vendor/plugins`目录下,提供额外的功能或扩展。 以上就是Rails3的一些常用...

Global site tag (gtag.js) - Google Analytics