0

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

4

2 回答 2

2

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

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

  • min_prefix_len => 索引的最小单词前缀长度
  • min_infix_len => 中缀索引允许通过'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. 耙 ts:停止
  2. 耙 ts:index
  3. 耙 ts:开始

(或者)

  1. 耙 ts:重建

上面的示例将导致以下实例:

  • 评论。搜索“最佳*”

  • 评论.搜索“最佳代表*”

  • 评论。搜索“代表”..等

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

于 2013-02-06T08:12:19.553 回答
1

我不确定,但默认情况下它以这种方式工作,但是您可以在此处查看匹配模式http://freelancing-god.github.com/ts/en/searching.html

于 2012-04-30T04:42:44.933 回答