1

如何将字符串转换为数组以便可以一一搜索。例如,如果传递的参数是puma shirts,我想将其拆分为pumaandshirt以便我可以使用pumain进行 solr 搜索table1并获取 id。在第二次机会中,我想用shirtsin进行 solr 搜索table1。这是我目前正在使用的控制器代码。

def search_all
    ids1=Array.new       

    @search1=Table1.search do
      fulltext params[:text]
    end

    @search1.results.each do |result|
      ids1 << result.id
    end
end

我该怎么做呢?

4

2 回答 2

1

您可以使用该split方法将字符串拆分为数组:

> "this string has many words".split
 => ["this", "string", "has", "many", "words"] 

split如果您想在除空格之外的其他内容上进行拆分,您可以传递一个参数,但默认值应该适用于您的情况。

我之前实际上没有使用过 Solr(或者 Sunspot,这似乎是将它与 Rails 集成的标准方式),所以这只是一个猜测,基于对它和你包含的代码的简要浏览,但我想你会做这样的搜索(假设我明白你想要做什么):

search_terms = params[:text].split

@results = {}
search_terms.each do |search_term|
  search = Table1.search do
    fulltext search_term
  end
  @results[search_term] = search.results.map(&:id)
end

这应该为您提供一个实例变量 Hash @results- 它的键是搜索的术语,每个的值将是与该术语匹配的 Table1 元素的 id。

我希望这有帮助。

于 2013-04-29T05:44:37.557 回答
0

Try this code...

search_terms = params[:text].split

@results = []
search_terms.each do |search_term|
  search = Table1.search do
    fulltext search_term
  end
  @results << search.results.map(&:id)
end
@results.flatten!.uniq!
于 2013-04-29T08:24:26.333 回答