Solr搜索没有给出中间关键字的结果

时间:2014-11-11 06:04:11

标签: ruby-on-rails solr

我也有类似

的问题

What part of this Solr-Sunspot setup am I missing?

但是,问题是,我已经应用了所选解决方案并将我的可搜索字段设为text,但它仍然无法用于中间字符串。它只适用于完整的字符串。

例如: - User.search (1, "adam")会给我亚当的结果,但这不会奏效:

User.search (1, "ad")

我的代码

用户模型

  searchable do
    text :firstname
    text :lastname
    text :email
    integer :some_id
  end

搜索方法

  def self.search(obj, search_text)
    solr_search do
      keywords search_text
      with(:some_id, obj.id)
    end
  end

除此之外,我还尝试了以下代码:

  def self.search(obj, search_text)
    solr_search do
      keywords ''
      any_of do
        with(:email, search_text)
        with(:firstname, search_text)
        with(:lastname, search_text)
      end
      with(:some_id, obj.id)
    end
  end

但是,我在rails console中遇到以下错误:

> User.search(obj, "ad")

Sunspot :: UnrecognizedFieldError:没有为名为'电子邮件'

的用户配置字段

1 个答案:

答案 0 :(得分:0)

配置为text的字段将full-text可供搜索。其他(Scalar)字段integer, boolean, time and string可用于scope queries

在您的可搜索区块中,您只配置了文本字段。

  searchable do
    text :firstname
    text :lastname
    text :email
    integer :some_id
  end

并且您的搜索方法对未在可搜索块中定义的标量字段执行搜索。

  any_of do
    with(:email, search_text)
    with(:firstname, search_text)
    with(:lastname, search_text)
  end

为了使这项工作,你必须在可搜索的块中将email,firstname和lastname字段定义为字符串。

  searchable do
    text   :firstname
    text   :lastname
    text   :email
    string :firstname
    string :lastname
    string :email
    integer :some_id
  end

Sunspot Search