0

我将RailsSunspot gem 和Websolr 一起用于 Solr 托管。假设我有一个这样的 Solr 索引 ActiveRecord 模型:

class User < ActiveRecord::Base
  searchable do
    text :name
  end
end

现在我想从这个模型中删除索引,所以我只是删除了这个索引代码(可搜索块)。索引数据会自动从 Solr 中删除吗?我认为不是,我需要手动删除/重新索引。我可以像这样重新索引所有内容:

Sunspot.index
Sunspot.commit

但是重新索引我的整个数据库会很慢。是否有另一种更快的方法来停止索引 1 模型?我在 Websolr 中没有看到任何界面来查看和删除索引中的记录,而且我似乎找不到任何有关如何使用 Sunspot 从索引中删除模型的信息。

4

1 回答 1

0

我可以像这样重新索引所有内容:

不,你不能,如果你需要重新索引然后通过键入然后打开 Railsrails c控制台

=> Model.index

# User Load (15.6ms)  SELECT  "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 50]]
# [2018-02-27 18:45:04 +0600] Start Indexing
# D, [2018-02-27T18:45:05.439714 #15296] DEBUG -- :   SOLR Request (762.4ms)  [ path=update parameters={} ]

对于删除索引数据,请尝试以下操作

curl http://localhost:8982/solr/default/update?commit=true -d '<delete><query>*:*</query></delete>'

让我们在 url 部分描述

  • localhost: 是主机名。
  • 8982: 你的 Solr 服务器运行的端口号 如果你混淆了你的端口号然后打开 rails 控制台并输入puts Sunspot.config.inspect它会显示你的端口号。
  • /solr/default/update: 这是你的命令执行的路径。
  • ?commit=true -d: 就是这个指令。
  • '<delete><query>*:*</query></delete>': 就是这个方法。

我在这里找到了这个,但它对我不起作用,因为端口号和路径不同,我已经编辑了自己的方式并且它运行良好。

我认为这会有所帮助。

于 2018-02-27T12:38:34.353 回答