拼音字母搜索功能 之 gem

拼音字母搜索功能


使用的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})



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Men-DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值