ruby-on-rails 配置thinking-sphinx时出现问题,ThinkingSphinx::NoIndicesError

6gpjuf90  于 2023-08-08  发布在  Ruby
关注(0)|答案(1)|浏览(96)

我正在运行一个ubuntu服务器,它在创建索引后运行。
所以基本上所有的工作:

indexing index 'pois'...
WARNING: attribute 'id' not found - IGNORING
collected 1760907 docs, 27.4 MB
sorted 3.4 Mhits, 100.0% done
total 1760907 docs, 27438485 bytes
total 2.795 sec, 9813909 bytes/sec, 629822.77 docs/sec
total 1761030 reads, 0.347 sec, 0.1 kb/call avg, 0.0 msec/call avg
total 334 writes, 0.072 sec, 621.5 kb/call avg, 0.2 msec/call avg
ubuntu@stl-back-3:/etc/sphinxsearch$ sudo searchd
Sphinx 2.2.11-id64-release (95ae9a6)
Copyright (c) 2001-2016, Andrew Aksyonoff
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...
listening on 127.0.0.1:9312
listening on 127.0.0.1:9306
listening on xxx.xxx.xxx.xxx:9396
precaching index 'pois'
precached 1 indexes in 0.037 sec

字符串
然后我需要为Rails使用另一台服务器来使用这个pois索引
所以我把我的配置设置成这样:

enable_star: true
  min_infix_len: 2
  max_matches: 10000
  version: '2.2.11'

  address: xxx.xxx.xxx.xxx
  port: 9396


是的,我仔细检查了telnet,端口是开放的xxx.xxx.xxx.xxx:9396
然后我有一个简单的模型,像这样:

include ThinkingSphinx::ActiveRecord

  define_index "pois", with: :active_record do
    indexes name
    has latitude, longitude, population, altitude
  end
end


我也尝试了这个语法:sphinx_scope(:source => :pois)
但每当我尝试进行搜索时,我会发送这个错误:

Traceback (most recent call last):
ThinkingSphinx::NoIndicesError (ThinkingSphinx::NoIndicesError)


我错过了什么?
多谢

hyrbngr7

hyrbngr71#

如果你想使用Thinking Sphinx来集成Sphinx和Rails,那么你需要使用Thinking Sphinx的rake任务,比如bundle exec rake ts:indexbundle exec rake ts:rebuild,而不是直接调用searchd(以及indexer和其他Sphinx CLI可执行文件):https://freelancing-gods.com/thinking-sphinx/v5/rake_tasks.html
但是,正如@smathy在评论中指出的:模型中的define_index调用是一种非常古老的语法,自Thinking Sphinx v2(2013)以来就没有使用过,而自v3以来,索引定义存在于app/indices中自己的文件中:https://freelancing-gods.com/thinking-sphinx/v5/indexing
考虑Sphinx v2适用于Rails 3.0/3.1 -如果您使用的是较新版本的Rails,那么您必须使用TS v3或更新版本(理想情况下为v5.5,它支持Rails 4.2以上)。

相关问题