按字母顺序搜索WebSolr Ruby on Rails



我正试图在solr中执行字母搜索,但直到此刻我才能完成

我想按字母搜索,我的搜索只需要检索开头以指定字母开头的单词,而不是如果单词包含其他任何地方的字母

示例:如果我点击字母"a",它一定会检索"蚂蚁"、"动物"等

不是"香蕉"、"骆驼">

我现在的控制器是这样的:

@articles=Sunspot.search(文章(do关键字(params[:q](分页(:page=>params[:page],:per_page=>20(order_by:相关性,:descorder_by:article_order,:asc结束

有人能帮忙吗?提前感谢

这在一定程度上取决于如何将模型配置为索引。

EdgeNGramFilterFactory

将EdgeNGramFilterFactory添加到schema.xml中的文本字段类型中,或者为使用NGram过滤器处理的文本字段创建一个新类型。

EdgeNGramFilterFactory将每个项转换为一组NGrams。"Dog"扩展为"d"、"do"one_answers"Dog"。

这种方法将允许您使用字母开头匹配文本字段中的任何术语。它对于扩展查询的匹配项很有用,但是,如果您将其用于一种首字母筛选,那么它可能不是您想要的。

"以开头"QueryFilter

如果您测试的值是一个简单的标量字符串值(文章标题、类别名称、作者名称等(,那么您可以将该值作为字符串进行索引,并使用查询过滤器搜索匹配项。

在Sunspot:

class Article
  searchable do
    # ...
    string :title
  end
end
@search = Sunspot.search(Article) do
  keywords(params[:q])
  paginate(:page => params[:page], :per_page => 20)
  where(:title).starting_with(params[:letter])
  order_by :relevance, :desc
  order_by :article_order, :asc
end

相关内容

  • 没有找到相关文章

最新更新