拼音字母搜索功能
使用的gem:
https://github.com/huacnlee/redis-search
使用方法
配置文件路径: 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})