0

照片模型中,我有以下简单规则:

  searchable do
    string :note
  end

我尝试用Solr搜索一些字符串(同时在两个表中)。这是终端中Solr 查询的输出(第一个是Articles,第二个是Photos):

SOLR 请求 (4.8ms) [ path=# parameters={data: fq=type%3A Article&q=searched_string&fl=%2A+score&qf=title+content&defType=dismax&start=0&rows=30 , method: post, params: {:wt=> :ruby},查询:wt=ruby,标题:{"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"},路径:选择,uri:http://localhost :8982/so​​lr/select?wt=ruby , open_timeout: , read_timeout: }]

还有这个

SOLR 请求 (4.4ms) [ path=# parameters={data: fq=type%3A Photo&q=asgasg&fl=%2A+score&defType=dismax&start=0&rows=30 , method: post, params: {:wt=>:ruby},查询:wt=ruby,标题:{"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"},路径:选择,uri:http://localhost:8982/so​​lr /select?wt=ruby , open_timeout: , read_timeout: } ]

控制器:

@articles = Article.search do
  fulltext params[:search]
end
@photos = Photo.search do
  fulltext params[:search]
end
## => searching ##
puts @articles.results #work fine
puts @photos.results #always 0

我完全不知道,为什么 SOLR 不在Photo模型中搜索...一切都应该指定和设置,但仍然不知道,问题出在哪里...

4

2 回答 2

1

我认为在 Photo 模型中,您必须将其定义:notetexttype (not string) 才能对其运行全文搜索:

searchable do
  text :note
end

此外,您设置@articlesand @photos,但检查@usersand@photos在您的问题中。

更新

根据太阳黑子自述文件

“文本字段将是全文可搜索的。其他字段(例如,整数和字符串)可用于范围查询”

也就是说,要在该字段上运行fulltext或运行keywords,它必须text 在可搜索块中声明。你有它string,它只能用于精确匹配使用with()

祝你好运。

于 2012-03-07T18:12:56.293 回答
0

我的问题的工作解决方案: 1. 停止 rails 服务器 2. rake sunspot:reindex 3. 运行 rails 服务器

如果searchable块中的所有内容都发生了变化,则需要重新索引数据。

于 2012-03-07T23:13:45.853 回答