我正在运行一个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)
型
我错过了什么?
多谢
1条答案
按热度按时间hyrbngr71#
如果你想使用Thinking Sphinx来集成Sphinx和Rails,那么你需要使用Thinking Sphinx的rake任务,比如
bundle exec rake ts:index
和bundle 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以上)。