`
sg552
  • 浏览: 616651 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
47437293-94b9-3b04-9152-8971c7580049
白手起家学习使用Flex
浏览量:18618
社区版块
存档分类
最新评论

tire的使用入门

阅读更多
(tire 调试的关键是:
1. 会一些基本的elasticsearch 操作, curl -XDELETE...
2. 看log
3. 看 test 目录。 这个是最好的文档。
)

tire 是 elasticsearch的 RUBY工具 (大部分是RUBY, 而不是RAILS),下面是几个基本用法的笔记:

比较全面的文档 见:  (example 文件夹)http://karmi.github.com/tire/ 

如果你在进行RAILS开发,建议你从 tire自带的 RAILS EXAMPLE 看起。官方文档还是侧重于非RAILS项目的。


1. config/initializers/tire.rb
  Tire.configure do
    logger 'tire.log', :level => "DEBUG"
  end



1. 进行TIRE的声明:

    class Article < ActiveRecord::Base
      include Tire::Model::Search
      include Tire::Model::Callbacks
    end


2. 把所有的现有数据进行索引:

    
# import all 
Article.index.import Article.all

# call the paginate method
Article.import :per_page => 100

# call the paginate method, default per_page => 1000
Article.import


导入:
$ rake environment tire:import CLASS='Article'
或者 先删除,再导入:
$ rake environment tire:import CLASS='Article' FORCE=true
production import:
$ rake environment tire:import CLASS='Article' RAILS_ENV=production

结果如下:
引用
focusbeijing@focusbeijing-desktop:/sg552/workspace/miaomiao_cat$ bundle exec rake environment tire:import CLASS='Item' FORCE=true
[IMPORT] Deleting index 'items'
[IMPORT] Creating index 'items' with mapping:
{"item":{"properties":{}}}
[IMPORT] Starting import for the 'Item' class
--------------------------------------------------------------------------------
287/287 | 100% ###################################################
================================================================================
Import finished in 1.77737 seconds


3. 查询:
    Article.search do
      query             { string 'love' }
      facet('timeline') { date   :published_on, :interval => 'month' }
      sort              { by     :published_on, 'desc' }
    end


4. 配置(dynamic mapping):
    class Article < ActiveRecord::Base
      include Tire::Model::Search
      include Tire::Model::Callbacks

      mapping do
        indexes :id,           :index    => :not_analyzed
        indexes :title,        :analyzer => 'snowball', :boost => 100
        indexes :content,      :analyzer => 'snowball'
        indexes :content_size, :as       => 'content.size'
        indexes :author,       :analyzer => 'keyword'
        indexes :published_on, :type => 'date', :include_in_all => false
      end
    end


5. 与mongoid 的结合使用:

  5.1 . 增加配置文件:  config/initializers/tire.rb
  Tire.configure do
    logger "log/tire.log"
  end

这样的话,可以看到日志
引用

# 错误的日志(出错原因:注意 -d 中不是正确格式的JSON):
# 2012-06-24 10:40:12:%L [apple/4fe67e0c91c97d1691000001] ("apples")
#
curl -X POST "http://localhost:9200/apples/apple/4fe67e0c91c97d1691000001" -d 'tasteswe
et_id4fe67e0c91c97d1691000001colorred'

# 2012-06-24 10:40:12:%L [400]

# ,正确的日志:
# 2012-06-24 10:44:30:%L [apple/4fe67f0e91c97d16c5000001] ("apples")
#
curl -X POST "http://localhost:9200/apples/apple/4fe67f0e91c97d16c5000001" -d '{"taste":"sweet","_id":"4fe67f0e91c97d16c5000001","color":"red"}'

    
  5.2 某个model的声明:

class Apple
  include Mongoid::Document
  field :color, :type => String
  field :taste, :type => String
  include Tire::Model::Search
  include Tire::Model::Callbacks

  # 绝对不要声明这个方法。 画蛇添足。 默认的RAILS就会自动生成正确的json string。否则的话, 会出现错误的json 导致保存不成功。
  #def to_indexed_json
  #   self.as_json
  #end
end


  5.3 Gemfile:
gem 'tire'
gem 'yajl-ruby', '1.0.0' # 1.1.0 mets problems
# for tire's import
gem 'will_paginate', '~> 3.0.0'


  5.4 rspec:

require 'spec_helper'

describe Apple do
  it "should create index" do
    apple = Apple.new :color => "red", :taste => "sweet good!"
    apple.save

    s = Apple.tire.search 'red'
    puts "s.inspect: #{s.inspect}"
    s.each do |a| 
      puts "document.inspect: #{a.inspect}"
    end 
  end 
end


  5.5 确保 mongodb 和 elasticsearch 都在运行,然后
  $ bundle exec rspec spec/models/apple_spec.rb
就可以看到, mongodb 和 elasticsearch 都同时被加入了新数据。

  5.6 一个 ACTION的例子:
    (注意其中的分页  和 查询 )

+    page = params[:page] || 1
+    key_word = params[:key_word] || ""
+    s = Tire.search 'items' do
+      unless key_word.blank?
+        query do
+          string(key_word)
+        end
+      end
+      sort { by :created_at, 'desc' }
+      size 50
+      from (page.to_i - 1) * 50
     end
+    @items = s.results

 
分享到:
评论

相关推荐

    ADAMS使用入门

    《ADAMS使用入门详解》 ADAMS,全称为Automatic Dynamic Analysis of Mechanical Systems,是由美国MDI公司开发的一款领先的多体系统动力学分析软件。这款软件在全球动力学分析领域占据主导地位,市场份额高达70%,...

    CarSim文档资料CarSim中文教程CarSim 笔记仿真设计等学习资料合集(70个).zip

    Carsim-Handling&Sus&Tire.pdf CarSim-Simulink.pdf Carsim8.02应用高版本Matlab.docx CarSim与Simulink联合仿真.pdf CarSim中文教程.pdf CarSim培训.pdfCarSim软件入门与精通.PDF Lesson 1_QuickStart.pdf Lesson 2...

    l-曲线matlab代码-wat-lii:用于对时间分辨的激光诱导白炽(TiRe-LII)信号进行建模和分析的模块化程序

    信号主要使用吸收,传导和蒸发子模型生成,并具有执行其他冷却模式的能力。 典型的TiRe-LII设备如下所示。 入门 这正在建设中,将很快到来。 注意,时间是相对于激光脉冲强度(或信号的峰值,如果未对加热/吸收进行...

    Tire and Vehicle

    **2.5 轮胎模型(入门讨论)** 介绍了几种常见的轮胎模型类型,包括简单的刚性轮胎模型、基于物理的模型等,并讨论了它们的应用场景。 #### 三、稳态滑移力和力矩生成理论 **3.1 引言** 本节重点介绍了轮胎在...

    入门级的sql server2008语句

    ### SQL Server 2008 入门级SQL语句详解 #### 一、创建数据库与表 在SQL Server 2008中,创建数据库是进行任何操作的基础。通过以下命令可以创建一个名为`TestData`的新数据库: ```sql CREATE DATABASE TestData...

    汽车CarSim培训教程文档资料CarSim中文教程CarSim 笔记仿真设计等学习资料合集(68个).zip

    Carsim-Handling&Sus&Tire.pdf CarSim-Simulink.pdf Carsim8.02应用高版本Matlab.docx CarSim与Simulink联合仿真.pdf CarSim中文教程.pdf CarSim培训.pdfCarSim软件入门与精通 基于CarSimRT的车辆稳定性系统控制器...

    ADAMS虚拟样机技术入门与提高.pptx

    《ADAMS虚拟样机技术入门与提高》 ADAMS,全称为Automatic Dynamic Analysis of Mechanical Systems,是一款由美国MDI公司研发的机械系统动力学自动分析软件。作为虚拟样机技术的领头羊,ADAMS占据市场主导地位,...

    acm从入门到放弃

    - Tire树:即字典树,用于快速检索字符串。 - Manacher算法:用于寻找字符串中所有回文子串的算法。 - 后缀数组:一种用于处理字符串相关问题的数据结构。 - 括号匹配问题:涉及到括号正确匹配的算法问题。 - Hash...

    ADAMS 初学者 的扳手主要用于初学者学习ADAMS使用

    在ADAMS中,存在多种轮胎模型选项,如Fiala Tire、UA(University of Arizona Tire)、Interpolation and Point Follower Tire、Smithem Tire和Delft Tire模型等。研究选择了基于Bergmen三维弹簧模型推导出的UA模型...

    adams入门ppt

    6. **专业模块** 包括Car Package针对工业汽车的模拟,包括A/Car、A/Driver、A/Tire和A/Pre等;Rail Package用于轨道车辆分析的A/Rail;A/Engine专注引擎设计;A/Durability进行耐久性分析;AVT toolkit用于履带车辆...

    [Objective-c程序设计].杨正洪等.扫描版

    16.1 入门项目222 16.2 KVC简介224 16.3 路径225 16.4 整体操作226 16.4.1 中途小憩227 16.4.2 流畅地运算231 16.5 批处理233 16.6 nil仍然可用234 16.7 处理未定义的键235 16.8 小结236 第17章 NSPredicate237 17.1...

    matlab导入excel代码-Simscape-Vehicle-Templates:用于在Simulink中使用Simscape创建自定义车

    入门 打开项目文件sm_car_proj.prj 第一次打开它时,需要10分钟才能从Excel加载所有变体的所有参数。 每次之后,都会从.MAT文件加载数据,因此速度更快。 通过UI探索车辆类型和操作 在MATLAB工作区的“车辆”数据...

    Carsim和Simulink相关资料整合

    里面包含Carsim相关基础教程,入门与精通,包括联合simulink的相关仿真教程。《Carsim8.02应用高版本Matlab.docx》、《Carsim-Handling&Sus&Tire》、《CarSim-Simulink.pdf》、《CarSim培训.pdf》、《CarSim与...

    adams培训教程ppt1

    《ADAMS基础培训教程》是针对ADAMS软件的入门学习资料,ADAMS全称为Automatic Dynamic Analysis of Mechanical Systems,是一款高级机械系统动力学分析软件。它主要用于多体动力学模拟,帮助用户进行复杂的机械系统...

    搜索引擎开发培训课程提纲PPT学习教案.pptx

    12. **查找词典算法**:Trie树是构建词典和进行快速查找的高效数据结构,包括数字搜索树和Tire树,它们的生成、API使用和优化过程都是需要掌握的。 13. **隐码模型**:在信息检索中,发射概率和转移概率用于建模词...

    leetcode中国-MyAlgorithmSolutions::balloon:记录我所有的算法/数据结构

    leetcode中国 MyAlgorithmSolutions 记录我所有的算法/数据结构 目录 点击打开目录 笔记 数据结构 算法(第四版) 大一题目 HDOJ LeetCode 程序员面试金典 剑指OFFER PAT 甲级 乙级 ...Tire ...清华oj入门

    山地车各部件名称扫盲及粗解.pdf

    轮组和轮胎(Wheel and Tire):轮组由车圈、辐条和花鼓组成,不同等级的山地车轮组在材料、强度和重量上都有所不同。轮胎则是直接与地面接触的部分,它的纹路、宽度和材料(如橡胶、硅胶等)对骑行性能有着重要影响...

Global site tag (gtag.js) - Google Analytics