Heroku上的Solr配置

时间:2013-06-29 17:38:41

标签: ruby-on-rails-3 heroku solr

我在Heroku上使用WebSolr Cobalt。 如果我搜索第一个字母或完整单词,但是没有单词的部分部分,则搜索正在进行。

有任何帮助吗?

1 个答案:

答案 0 :(得分:2)

启用部分字词搜索

您必须编辑本地schema.xml文件(通常在solr / config下)以添加:

  1. NGramFilterFactory
  2. EdgeNGramFilterFactory
  3. 这是我的样子 - sample schema.xml

    <强> EdgeNGram

    我选择了EdgeN选项。它不允许在单词的中间进行搜索,但它允许从单词的开头开始进行部分单词搜索。这减少了你不想要的误报/匹配,表现更好,并且通常不会被用户遗漏。另外,我喜欢minGramSize = 2,所以你必须输入至少2个字符。有些人将此设置为3。

    设置并运行本地后,必须编辑websolr使用的schema.xml,否则即使您为模型配置了全文搜索,也会获得默认行为,即需要输入全字。

    编辑websolr schema.xml

    1. 转到适用于您应用的Heroku在线信息中心
    2. 转到资源选项卡,然后单击Websolr附加组件
    3. 点击索引
    4. 下的默认链接
    5. 单击“高级配置”链接
    6. 从本地粘贴到schema.xml中,包括您选择的Ngram tokenizer的配置(如上所述)。保存。
    7. 复制“配置Heroku应用程序”框中的链接,然后将其粘贴到终端以在heroku配置中设置WEBSOLR_URL链接。
    8. 单击“索引状态”链接以获取漂亮的统计信息,并查看您是快速还是慢速运行。
    9. 重新索引所有内容
    10.   

      heroku run rake sunspot:reindex [5000]

      • 不要使用heroku run rake sunspot:solr:reindex - 不推荐使用,不接受任何参数且速度慢
      • 默认批量大小为50,大多数人建议使用1000,但我已经看到明显更快的结果(每秒1000行而不是大约500 rps)通过将其提高到5000 +

      将其提升到新的水平

      5 ways to speed up indexing