我有一个带有think_sphinx 的rails 应用程序,它成功地用于索引/搜索。然而,我想知道是否有办法让部分工作匹配项进行搜索。这意味着如果我有一份标题为“最佳报告”的报告并且我搜索了“最佳”,它将返回该报告。
问问题
499 次
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 :
- 耙 ts:停止
- 耙 ts:index
- 耙 ts:开始
(或者)
- 耙 ts:重建
上面的示例将导致以下实例:
评论。搜索“最佳*”
评论.搜索“最佳代表*”
评论。搜索“代表”..等
如果有任何疑问,请随时问我.......
于 2013-02-06T08:12:19.553 回答
1
我不确定,但默认情况下它以这种方式工作,但是您可以在此处查看匹配模式http://freelancing-god.github.com/ts/en/searching.html
于 2012-04-30T04:42:44.933 回答