拼音字母搜索功能
使用方法
配置文件路径: config/initializers/redis_search.rb
# -*- coding: utf-8 -*-
require redis
require redis-namespace
require redis-search
begin
redis = Redis.new(:host => 127.0.0.1,:port => 6379)
redis.select(3)
redis = Redis::Namespace.new(you_app_name:redis_search, :redis => redis)
Redis::Search.configure do |config|
config.redis = redis
config.complete_max_length = 100
config.pinyin_match = true
# 是否关闭中文分词,true为关闭,可节省内存占用
config.disable_rmmseg = true
end
rescue
p redis server not running
end
为模块做索引
class User < ActiveRecord::Base
include Redis::Search
def hits
# 计算权重
end
redis_search_index(:title_field => :name, #主要索引域
:alias_field => :login, #次要的索引域
:score_field => :hits, #传入一个方法名,根据方法返回值来确定权重
:prefix_index_enable => true, #逐字索引,逐字搜索时开启
:condition_fields => [:role], #条件,传入的是一组字段,搜索时可以以
:conditions => {:role => :admin}) 的方法使用。
:ext_fields => [:email, :created_at]) #其余需要索引的域
end
# 重新build索引
rake redis_search:index
搜索
# 逐字搜索
Redis::Search.complete(User, params[:query], :conditions => {:role => :admin})
# 全文搜索
Redis::Search.query(User, params[:query], :conditions => {:role => :admin})