Thinking_Sphinx部分工作匹配

时间:2012-04-30 03:52:26

标签: ruby-on-rails search indexing thinking-sphinx

我有一个使用thinking_sphinx成功进行索引/搜索的rails应用程序。然而,我想知道是否有办法让部分工作匹配搜索。这意味着如果我的报告标题为“最佳报告”,并且我搜索“最佳”,则会返回该报告。

2 个答案:

答案 0 :(得分:2)

我建议您尝试使用Thinking Sphinx进行通配符搜索。

基本上有三种设置来规则通配符搜索世界:* enable_star * min_prefix_len * min_infix_len

  • min_prefix_len =>索引的最小字前缀长度
  • min_infix_len => Infix索引允许实现通配符 通过'start *','* end'和' middle '通配符搜索

注意:* enabled_star是必需的加上其他两个中的一个用于启用前缀或中缀搜索的设置(不能同时具有两者,至少在同一索引上)*

例如:

型号:

class Comment < ActiveRecord::Base

   #define the indexes for your searchable attributes 

  define_index do
   indexes :comment
   enable_star: true
   min_infix_len: 3
   has created_at,updated_at
  end

end

控制器:

 class CommentsController < ApplicationController

     def search
      @result = ThinkingSphinx.search "*#{params[:id]}*" ,:classes => [Comment,....] 

     end
    end  

然后重建thinking_sphinx:

  1. rake ts:stop
  2. rake ts:index
  3. rake ts:start
  4. (或)

    1. rake ts:rebuild
    2. 以上示例将在以下实例中生成:

      • Comment.search“Best *”

      • Comment.search“Best Rep *”

      • Comment.search“ Rep ”..等等

      如果有任何疑问,请问我.......

答案 1 :(得分:1)

我不确定,但默认情况下这样做,不过你可以在这里查看匹配模式http://freelancing-god.github.com/ts/en/searching.html