Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何避免不在数据库中的记录而不重新索引solr_Ruby On Rails_Solr - Fatal编程技术网

Ruby on rails 如何避免不在数据库中的记录而不重新索引solr

Ruby on rails 如何避免不在数据库中的记录而不重新索引solr,ruby-on-rails,solr,Ruby On Rails,Solr,我有一张有4张唱片的模型票。我删除了数据库中的前2条记录,以创建一个测试用例,因为我遇到了一个错误,solr和数据库之间存在不匹配 search = Sunspot.new_search(Ticket) do paginate(:page => 1, :per_page => 2) end list = search.execute list.results list.results为第1页返回[],为第2页返回其余2条记录 理想情况下,它应该是一页两条记录。如果不重新索引

我有一张有4张唱片的模型票。我删除了数据库中的前2条记录,以创建一个测试用例,因为我遇到了一个错误,solr和数据库之间存在不匹配

search = Sunspot.new_search(Ticket) do
  paginate(:page => 1, :per_page => 2)
end

list = search.execute

list.results
list.results
为第1页返回
[]
,为第2页返回其余2条记录

理想情况下,它应该是一页两条记录。如果不重新索引solr,是否可以避免数据库中没有的记录?

简短的回答是“否”

如果您直接从数据库中删除对象而不重新编制索引,那么您将始终处于搜索结果与数据库中的内容不匹配的位置


但是,,如果您通过rails删除对象,那么它将为您更新索引,以便删除的对象不再在索引中,您的搜索结果也将反映数据库中的内容。

我删除了数据库中的记录,以创建一个测试用例,因为我遇到了一个solr和数据库不匹配的错误。只要你可以重新编制索引。但如果在删除数据库中的内容时不重新编制索引,则会遇到更多问题。