使用'sunspot_rails'gem更改SOLR schema.xml无效

时间:2013-01-26 22:52:56

标签: ruby-on-rails solr sunspot

我正在尝试使用SOLR在我的rails应用中搜索部分单词。这需要更改schema.xml文件。由其他人suggested,我已更新我的“app_root / solr / conf / schema.xml”文件以删除

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

并添加...

<fieldType name="text" class="solr.TextField" omitNorms="false">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

进行这些更改后,我运行rake命令rake sunspot:reindex并获得100%完整的重新索引结果。然后我启动我的服务器......但是,我仍然只收到完整单词的回复,而不是单词部分。

以防万一重要,这是我的Style模型的相关代码:

  searchable do
    text :full_name 
    #full_name is just one of Style's attribute columns
  end

和执行获取的代码...

if params[:sSearch].present?
  @search = Style.search do 
    fulltext params[:sSearch]
  end
  styles = @search.results
end

非常感谢任何帮助。

有关参考资料,请参阅:

https://github.com/sunspot/sunspot/blob/master/README.md

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.EdgeNGramFilterFactory

4 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,解决方法是重新启动您的solr实例并使用bundle exec rake运行reindex而不只是rake

$ bundle exec rake sunspot:solr:stop 
$ bundle exec rake sunspot:solr:start 
$ bundle exec rake sunspot:reindex

答案 1 :(得分:2)

除非sunspot_solr-2.1.1版本中的某些内容发生了变化,否则Solr不会读取复制到[rails_root] / solr目录中的schema.xml。它正在读取位于gem文件中的schema.xml(大致在这里:/gems/sunspot_solr-2.1.1/solr/solr/conf/schema.xml)。

我能够通过更改该文件,重新启动服务器以及检查solr管理界面中的架构来验证这一点。

它在我的mac和我使用的虚拟盒子上以相同的方式工作(Ubuntu 14.04 LTS - Trusty Tahr)。

(创可贴)解决方案是在那里编辑和使用文件。不过,先备份它。

答案 2 :(得分:1)

您正在运行哪个版本的Solr?我在使用Solr 4时遇到了类似的问题,它表明一旦重新启动Solr服务器就会更新架构,但索引不会按照架构进行更改。在花了很多时间重新启动并重新编制索引之后,我创建了一个带有更新配置的新核心(一个新的集合),这对我有用。

因此,尝试创建一个完整的新核心,看看是否有帮助。祝你好运!

答案 3 :(得分:0)

如果您使用的是Solr 4,那么排除故障的最佳方法是进入管理界面的Analyze窗口,并针对您的索引和查询界面运行一些测试字符串。您可以在下拉列表中选择具有“文本”类型或类型本身的任何字段。

在你的具体设置上,你似乎在说每个单词你想要匹配它的任何起始子集,从1个主角(真的吗?)到15个。所以如果有人搜索'a',你会得到所有从'a'开始的单词。这就是你想要的吗?

在尝试对太阳黑子部分进行故障排除之前,请尝试全部。