问题标签 [websolr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
824 浏览

solr - 如何使用 Sunspot / Websolr 在服务器之间快速传输数据?

由于我怀疑我的设置相当传统,我想先提供一些背景信息。我们的 Solr 设置涉及三个环境:

  1. 生产-Solr 服务器托管在Websolr上。
  2. Staging - 也是托管在Websolr上的 Solr 服务器。
  3. 开发 - 通过sunspot_solr gem 支持,它允许我们轻松设置我们自己的本地 Solr 服务器进行开发。

在大多数情况下,这运作良好。我们有很多记录,因此进行完整的重新索引需要几个小时(尽管急切加载并使用后台作业来并行化工作)。但这并不算太糟糕,因为我们不需要经常完全重新索引。

但是还有另一种情况开始变得非常烦人......我们经常需要用生产数据填充我们的本地机器(或暂存环境)(即基本上从生产中获取 SQL 转储并将其通过管道传输到我们的本地数据库中)。我们一直这样做是为了修正错误等等。

此时,因为我们的数据发生了变化,我们本地的 Solr 索引已经过时了。所以,如果我们希望我们的搜索正常工作,我们还需要重新索引我们的本地 Solr 服务器,这需要很长时间

所以现在的问题是:我不想做一个完整的重新索引,而是简单地将生产索引复制到我的机器上(即在概念上类似于 SQL 转储,但用于 Solr 服务器而不是数据库)。我已经用谷歌搜索了足够多的信息,知道这是可能的,但没有看到任何特定于 Websolr / Sunspot 的解决方案。这些是非常常见的工具,我想其他人一定已经知道了。

提前感谢您的帮助!

0 投票
1 回答
197 浏览

ruby-on-rails - 如何使用 sunspot solr 在 rails 的结果集中动态排列记录

我有userscafes还有他们的food_items(列出了一些成分)。到目前为止,我使用 solr 通过ingredients用户喜欢的一些来搜索 food_items。这是根据sunspot 文档使用 sunspot-solr 搜索完成的

此外,我能够收集like-ness到不同咖啡馆的用户的亲戚(基于他访问它的次数,搜索其菜单等)(这是一个动态生成的值)

问题: 我想使用 sunspot solr for rails 显示通过 solr 获取的相同结果(food_items),咖啡馆排名(结果重新排名)(基于用户对咖啡馆的相似性)
这个应用程序托管在 heroku和用途websolr

我找到了这些:

https://cwiki.apache.org/confluence/display/solr/Query+Re-Ranking

https://cwiki.apache.org/confluence/display/solr/RankQuery+API

但我不知道如何QParserPlugin在太阳黑子中创建或生成排名查询。

sunspot提供了一种编写自定义查询的方法。因此,如果我可以在构建查询以获取相似性并对每条记录(或)任何其他实现此类逻辑的方式进行排名时获得帮助,那就太好了。
谢谢!

0 投票
1 回答
192 浏览

ruby-on-rails - 如何按文档类型提升 Solr 搜索结果?

注意:我正在使用带有 Rails 的Sunspot,但如果您不熟悉 Sunspot 的 DSL,通用的 Solr 响应仍然可以引导我朝着正确的方向前进。

我有一些类似于这些的模型:

我需要同时在所有模型中进行全文搜索以获得混合结果,但在搜索结果中应该认为文章比书籍更相关。

我当前执行搜索的代码如下。

这会正确返回混合结果,但与 Book 结果相比,我需要提升 Article 结果。我想明确一点,这与首先列出所有文章结果然后列出所有书籍结果不同。根据 Solr 如何根据整体内容对结果进行排名,仍然可能会有一些组合。

我猜我需要使用一些增强功能,但不知道具体如何。

任何指针?

0 投票
2 回答
1147 浏览

solr - Solr 搜索拼写错误

我已将 Solr 与 My eComemrce Web 应用程序集成。我正在将产品标题和产品的许多其他领域索引到 Solr。现在我已将BLÅBÆRSOMMEREN索引到产品标题/名称中。我还为 Title 字段添加了 EdgeNGram。由于 EdgeNgram,如果我搜索任何令牌,我都会得到结果。并且由于拼写检查,如果我搜索错误的拼写,例如:BLÅBÆRISOMMEREN,我得到了结果。但是,如果我搜索BLÅBÆRI,我没有得到任何结果,因为没有任何相同的标记。

我想要结果中具有BLÅBÆR的产品,因为该令牌存在。对于任何其他错误的拼写搜索也是如此。

我怎样才能做到这一点?任何帮助将不胜感激!

谢谢。

0 投票
2 回答
668 浏览

utf-8 - 在 WebSolr 中创建文档时出现无效的 UTF-8 中间字节错误

我正在使用 SolrJ 6.2.1 并尝试在 WebSolr 索引上创建一个文档,但是当我尝试将文档添加到索引时,我不断收到以下错误。

错误:来自https://index.websolr.com/solr/XXXXXXX的服务器错误:无效的 UTF-8 中间字节 0xe0(在字符 #1,字节 #-1)

这是我为创建索引而编写的 SolrJ 代码:

最初设置索引时,我还在 WebSolr 中使用“自定义”索引类型。

有什么想法我可能在这里做错了吗?

谢谢,

0 投票
1 回答
122 浏览

ruby-on-rails - Rails 应用程序未在生产中获取 schema.xml 更改

我们正在 Heroku 上运行 Rails 应用程序,使用带有 Sidekiq 的 Websolr 插件来对索引作业进行排队。这已经工作了很长时间,但现在我们已经调整了schema.xml以改进子字符串匹配等。

修改后schema.xml的版本在本地和 CI 上运行,但生产 Rails 应用程序没有使用它。

这是新架构文件的相关部分:

以下是该字段用于索引模型的方式:

这是我到目前为止所做的:

  • schema.xml使用其网站上的配置选项卡将修改后的内容复制到 Websolr
  • 部署了使用新 Solr 字段的 Rails 代码
  • 重新启动运行 Sidekiq 的 Heroku 工作程序,将其缩放为 0,然后再次备份

当我尝试Profile在生产中索引 a 时,索引作业失败并出现以下错误:

RSolr::Error::Http - 400 Bad Request Error: 'ERROR: [doc=Profile 1] unknown field \'name_substr\'','code'=>400

当我在开发中遇到这种事情时,重新启动 Sidekiq 以及 Solr 即可修复它;我已经在生产中重新启动了所有我能做的事情,但没有让它工作。

一个明显的线索是,生产 Sidekiq 仪表板显示其正常运行时间为 123 天,尽管 Heroku 工作人员已重新启动。我搜索了文档,但找不到任何实际重新启动 Sidekiq 的方法。如果有人知道发生了什么,那么我真的很感激一些帮助:)

0 投票
1 回答
239 浏览

ruby-on-rails - RSolr::Error::Http (RSolr::Error::Http - 429

我正在研究托管在 heroku 服务器上的 Ruby on Rails 项目。搜索功能nalit 在本地主机上运行良好。但是当我尝试生产时,我收到以下错误:

我花时间寻找解决这个问题。我发现 429 代码状态是指 websolr 中的请求太多,它是用来防止 DoS 攻击的。

请问我该如何解决这个问题。

问候

0 投票
1 回答
773 浏览

ruby-on-rails - 删除模型索引后如何删除太阳黑子索引数据?

我将RailsSunspot gem 和Websolr 一起用于 Solr 托管。假设我有一个这样的 Solr 索引 ActiveRecord 模型:

现在我想从这个模型中删除索引,所以我只是删除了这个索引代码(可搜索块)。索引数据会自动从 Solr 中删除吗?我认为不是,我需要手动删除/重新索引。我可以像这样重新索引所有内容:

但是重新索引我的整个数据库会很慢。是否有另一种更快的方法来停止索引 1 模型?我在 Websolr 中没有看到任何界面来查看和删除索引中的记录,而且我似乎找不到任何有关如何使用 Sunspot 从索引中删除模型的信息。

0 投票
1 回答
255 浏览

django - Websorl 在构建 schema.xml 时返回错误“未知字段 'django_ct'”

我们的网站使用 Python 3.6.5 运行,并且:

  • django==1.11.20
  • django-haystack==2.8.1
  • 证书==0.0.8
  • urllib3<1.25,>=1.21.1
  • pysolr==3.8.1

我用 django-haystack(python manage.py build_solr_schema > schema.xml)生成了 schema.xml,并将其粘贴到 websolr(heroku 版本)中。

当我运行以下命令时:

我收到以下错误:

无法将文档添加到 Solr:Solr 响应错误(HTTP 400):[原因:错误:[doc=naturalearth.naturalearthmerged.12001] 未知字段 'django_ct']

回溯(最后一次调用):文件“/app/.heroku/python/lib/python3.6/site-packages/haystack/backends/solr_backend.py”,第 72 行,更新 self.conn.add(docs, commit=commit, boost=index.get_field_weights())

文件“/app/.heroku/python/lib/python3.6/site-packages/pysolr.py”,第 918 行,添加覆盖=覆盖,处理程序=处理程序)

_update 中的文件“/app/.heroku/python/lib/python3.6/site-packages/pysolr.py”,第 500 行

return self._send_request('post', path, message, {'Content-type': 'text/xml; charset=utf-8'})

_send_request 中的文件“/app/.heroku/python/lib/python3.6/site-packages/pysolr.py”,第 412 行引发 SolrError(error_message % (resp.status_code, solr_message)) pysolr.SolrError: Solr 响应错误(HTTP 400):[原因:错误:[doc=naturalearth.naturalearthmerged.12001] 未知字段'django_ct']

我猜它与 schema.xml 中的以下几行有关:

有什么线索吗?

0 投票
1 回答
18 浏览

ruby - 如果 Solr 不可访问,则在 Ruby Heroku 应用程序中忽略 Solr

我在 Heroku 上部署了一个简单的 Ruby 应用程序,它使用 WebSolr 插件来支持searchable索引。如果当 WebSolr 关闭时,应用程序将停止工作并出现 503 服务不可用错误。如果应用程序继续工作并且索引暂时不起作用,我不介意。是否可以忽略 Solr 中断,以便 ruby​​ 应用程序继续运行?