1

我在 Heroku 上使用 WebSolr Cobalt。如果我搜索的是第一个字母还是整个单词,但没有单词的部分部分,则搜索工作正常。

有什么帮助吗?

4

1 回答 1

2

启用部分词搜索

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

  1. NGramFilterFactory
  2. EdgeNgramFilterFactory

这是我的样子 -示例 schema.xml

EdgeNGram

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

一旦你的本地设置和工作,你必须编辑 websolr 使用的 schema.xml,否则即使你为你的模型配置了全文搜索,你也会得到需要输入全词的默认行为。

编辑 websolr schema.xml

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

heroku run rake 太阳黑子:reindex[5000]

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

把它带到一个新的水平

加快索引速度的 5 种方法

于 2013-09-05T22:33:21.907 回答