如何在Rails Sunspot中加入Solr模型

3

我需要加入另一个模型(GeoNameAlternateName),并按照文档进行了尝试。但由于某些原因,我收到以下错误:

ArgumentError: Unknown field option :prefix provided for field :name

我的GeoNameCityModel可以像这样进行搜索:

searchable do
text :name
string :feature_class
string :feature_code
latlon(:lonlat) { Sunspot::Util::Coordinates.new(lat, lon) }
join(:name, :prefix => "alternate", :target => GeoNameAlternateName, :type => :text, :join => { :from => :geonames_id, :to => :geonames_id })
end

这两个模型都有一个字段列?这可能会产生干扰吗?

我正在Mac OSX上运行,使用Rails 4.1.8和ruby-2.1.1/gems/sunspot_solr-2.1.1/solr。Solr版本为solr-spec 4.2.0.2013.03.06.22.32.13,solr-impl 4.2.0 1453694 - rmuir - 2013-03-06 22:32:13,lucene-spec 4.2.0,lucene-impl 4.2.0 1453694 - rmuir - 2013-03-06 22:25:29。

2个回答

1
“prefix”不在sunspot 2.1.1中,后来才添加的。如果您想使用它,请切换到master分支。
在您的情况下,应该是这样的:
Sunspot.setup(GeoNameAlternateName) do
 integer :id
 ... all other fields 
end

Sunspot.setup(GeoNameCityModel) do
 integer :id
 integer :geoname_id
 join(:name, :type => :text, :join_string => 'from=geoname_id to=id')
 ... all other fields 
end

但是这里如何引用GeoNameAlternateName表? - dc10
而且它不起作用,它不考虑GeoNameAlternateName表中的任何结果。 - dc10
Solr不是关系型数据库。在Solr中,GeoNameAlternateName和GeoNameCityModel都将出现在同一个集合中。因此,您需要向GeoNameCityModel添加“外键”。并且您的两个模型都应该有id字段。这里是sunspot源代码中的示例,这里是Solr关于连接的文档。 - notdang
抱歉,不知道如何编辑评论。这是之前评论中缺失的链接 - notdang
不行,完全不起作用。我尝试按照链接中演示的设置过于简单的模型,但是我没有得到匹配结果。 - dc10

0

我已经让它运行了。 首先我必须使用 git 仓库中的最新版本。

  gem 'sunspot_rails'  , :git => 'https://github.com/sunspot/sunspot.git'
  gem 'sunspot_solr', :git => 'https://github.com/sunspot/sunspot.git' # optional pre-packaged Solr distribution for use in development

然后在模型中:

join(:alternate_name,  :target => GeoNameAlternateName, :type => :text, :join => { :from => :geonames_id, :to => :geonames_id })

在联结模型GeoNameAlternateName中

 searchable do
    integer :geonames_id
    text :alternate_name
  end

你能否请审核一下我的问题?http://stackoverflow.com/questions/42262259/how-to-get-the-relational-records-using-rails-solr-search - 谢谢 - user5084534

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接