问题标签 [solr5]

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 投票
0 回答
540 浏览

solr - 如何修复拼写检查异常所有检查器都需要使用相同的分析器(Solr 5.3.1)

所有,我正在尝试在 Solr 5.3.1 中应用拼写检查。

目前 Solr 5.3.1 已经包含SpellCheckComponent. 如下所示。

但是当我尝试使用此功能时。像这样。

http://10.2.21.38:7574/solr/gettingstarted_shard1_replica2/spell?q=%E7%94%B2&wt=json&indent=true

我得到了例外的回应说

All checkers need to use the same Analyzer

我还尝试从互联网上搜索一些解决方案。并找到了一些解决方案,如下所示。

Solr 4.0 如何更改拼写检查器分析器以使它们都相同?

Solr 拼写检查:无法显示结果,总是收到相同的错误

因此,我尝试按照答案将这些字段更改为相同的字段。

到同一个领域

像这样 。

这是在架构中定义的。

<field name="EntryCNName" type="text_ik" indexed="true" stored="true"/>

字段类型定义是

但不幸的是仍然得到同样的错误。有人可以帮忙弄清楚这个错误是什么意思吗?如何解决?

谢谢。

更新

我取得了一些进展。

我发现应该在架构中定义<str name="field">xx</str>searchComponent并且在requestHandler.the 的 xxx<str name="spellcheck.dictionary">xxx</str>应该来自spellchecker名称。例如,在我的情况下,它们是defaultand wordbreak

所以我改变了我的配置,如下所示。

架构.xml

SolrConfig.xml

现在错误消失了。但是当我像这样调用网址时

http://10.2.21.38:7574/solr/gettingstarted_shard1_replica2/spell?q=lu&spellcheck=true&spellcheck.collat​​e=true&spellcheck.build=true

我得到了空洞的建议。

而实际上。我可以用关键字搜索很多结果lung。为什么 solr 不建议Lung我尝试的时候lu?我错过了什么。谢谢。

在此处输入图像描述

0 投票
3 回答
4714 浏览

solr - Solr 5 如何在特定领域进行搜索

我正在使用 Solr 版本 5 来搜索数据。我正在使用以下查询,它在所有字段中搜索关键字。

谁能建议我查询以仅在title字段中搜索关键字。

谢谢。

0 投票
1 回答
424 浏览

solr - solr5.1:Json facet:范围 facet 查询结合 blockjoin 不起作用

以下是我的架构结构:

Doc5 在结构上与 Doc4 相似。

我正在使用 json-facets。以下是我的查询

如果我不使用范围查询,而只是从**a2**上面的查询部分开始我的查询,它会按预期获取结果。同样,如果我运行上述查询,所有结果blockParent都会出现,但blockParent相关方面的结果不会出现。

0 投票
1 回答
42 浏览

solr - 删除产品变体 id 之间的空格会减小 solr5 中的索引大小吗?

我一直在将一些产品规格保存到Solr 5. 大多数产品都包含使用破折号或圆点的唯一变体 ID,例如:Samesung TV 54 : AD-oi-230, Sony TV 24 : 1.849.32s.s.

但偶尔,我会遇到一些使用空格而不是破折号的变体 id,例如Samsung 54 : OPD 1 jud, Sony 32 : s1 90 b33 9 337

由于这些 id 没有太大意义,如果我删除了这些空格 ( Samsung 54 : OPD1jud, Sony 32 : s190b339337),它会更好地扩展还是使索引大小更小?

这是我存储模型名称的字段。我已启用WordDelimiterFilterFactory

0 投票
1 回答
492 浏览

solr - solr 如何存储来自不同父文档的对同一子文档的多个引用?

根据链接,父子文档存储为

这是否意味着如果我从 parent1 和 parent2 引用 child1,它将被复制两次,或者它会引用同一个 child1 文档?

0 投票
0 回答
460 浏览

solr - 增加在 solr 中有更多匹配项的文档的分数

我有 SOLR 5.3.1 版本。我想在开始时显示那些具有更多匹配项的文档。

为此,我在模式的每个字段上都应用了 omitNorms=true。我还实现了自定义相似性类。我的相似性类如下所示:

我在 schema.xml 中对相似性类进行了以下更改

我在 solrconfig.xml 中对相似类进行了以下更改

我已经调试了查询。它仍然显示每个文档的分数等于 1。这是调试查询结果显示哪个参数影响分数。

请让我知道我是否遗漏了其他任何东西来提高具有更多匹配项的文档的分数?

0 投票
1 回答
749 浏览

solr - 从命令行覆盖 solr 上的 contextPath

使用命令行参数启动 Solr 5 时是否可以覆盖码头“contextPath”属性?我想要类似的东西

这样基本 url 将是http://localhost:8983/s

准确地说,我想完全覆盖 contextPath 属性

0 投票
1 回答
1186 浏览

solr - 如何正确地将额外的 SOLR 5 (vm) 节点添加到 SOLR Cloud

我有一个 SOLR / Zookeeper / Kafka 设置。每个都在单独的虚拟机上。

我已经使用两个 SOLR 4.9 vms (Ubuntu) 成功运行了这一切

现在我希望构建两个 SOLR 5.4 虚拟机并让它再次工作。

本质上,“替换升级”

我已经“破解”了我的问题的解决方案,但这让我非常紧张。

首先,Zookeeper 正在运行。我关闭了我的 SOLR 4.9 vms 并从 Zookeeper 中删除了配置(不一定按那个顺序... ;-))

现在,我根据 SOLR Wiki 上的“生产安装”说明启动我已安装 SOLR 5.4 的“solr5”虚拟机(以及云模式下的 SOLR)。我还在“solr6”上安装了 5.4,但它还没有运行。

我在“solr5”机器上发出这个命令:

我得到以下输出:

一切都很好。我打开我的微服务,它将我所有的 SOLR 文档从 Kafka 泵入“solr5”。

现在,我想将“solr6”添加到集合中。除了我的 hack(我稍后会描述)之外,我找不到这样做的方法。

我之前用来创建集合的命令,由于观察到我的集合已经存在而出错。

似乎没有 zkcli.sh 或 solr 命令可以满足我的要求。似乎也没有任何 api 命令执行此操作。

有没有一种简单的方法可以告诉(SOLR?Zookeeper?)我想向我的 SOLR 节点添加另一台机器,请像第一台(solr5)一样配置它并开始复制数据?

当我发出 create 命令时,也许我应该让两台机器都运行?

我会感谢一些“已批准”的方法来执行此操作,因为每次需要升级 SOLR 时,我都需要想出一个“解决方案”来在 Prod 中执行相同的方法。

现在我的黑客。请记住,我现在有两天时间试图找到关于此的明确文档。请不要火焰,我完全明白这不是做事的方式。至少,我希望这不是做事的方式......

  1. 将 fooCollection 目录从 create collection 命令放置在“solr5”(即 /opt/solr/server/solr/fooCollection_shard1_replica1)上的位置复制到我的“solr6”VM 上的相同位置。
  2. 使集合目录名称的更改看起来合乎逻辑(变为 fooCollection_shard1_replica2)
  3. 使 core.properties 文件中的更改看起来合乎逻辑:

作为参考,这里是由 create 命令创建的 core.properties 文件。

这是我完成黑客攻击后文件在“solr6”上的样子。

当我这样做并重新启动“solr6”时,一切看起来都是金色的。“云”网页在管理网页中看起来正确 - 当我将文档添加到“solr5”时,如果我直接从管理网页点击它,它们在“solr6”中可用。

如果有人能告诉我如何在没有这样的黑客攻击的情况下实现这一目标,我将不胜感激……或者这是正确的方法……

==============================

回答@Mani和建议的程序

谢谢玛尼-我确实按照您的步骤非常仔细地尝试过。

最后,我从收集状态查询中得到这个输出:

这是我一直在实验中发现的结果。核心将在其中一个 SOLR VM 上创建(我发出命令行以在其上创建集合),但我没有在另一个 VM 上创建任何东西——根据您下面的步骤,我相信你也认为应该发生,是吗?

另外,我会为任何阅读 5.4 的人注意,命令是“healthcheck”而不是 healthstatus。命令行会立即显示给您,所以没什么大不了的。

================

更新 1 :: 手动添加第二个核心

如果我转到另一个 VM 并手动添加以下内容:

然后我在同一个虚拟机上重新启动我的 SOLR 服务器: sudo /opt/solr/bin/solr restart -c -z zoo1,zoo2,zoo3/solr

我会发现第二个节点神奇地出现在我的管理控制台中。它将是一个“追随者”(IE 不是领导者),两者都将在云 UI 中从“shard1”分支出来。

我不知道这是否是“方法”,但这是我迄今为止找到的唯一方法。我将重现到那时并尝试使用管理 UI 并看看我得到了什么。时机成熟时,这对我的 IT 人员来说会容易一些——如果可行的话。

================

更新 2 :: create 命令的轻微修改

@Mani - 我相信我按照你的步骤取得了成功 - 就像很多事情一样,一旦你理解它就很简单。

我重置了所有内容(删除了目录,清除了 zookeeper(rmr / solr)并重新从头开始做了所有事情。

我因此稍微更改了“创建”命令:

注意“replicationFactor 2”而不是 1。

突然间,我确实在两个虚拟机上都有内核。

几点注意事项:

我发现仅通过使用 Zookeeper IP 地址以云模式启动 SOLR 5.4 服务器无法从状态调用中​​获得满意的结果。Zookeeper 中的“节点”尚未创建。

create 命令此时也失败了。

我发现的方法是使用 zkcli.sh 来加载配置,如下所示:

当我在运行此命令后立即检查 Zookeeper 时,有一个 /solr/configs/fooCollection“路径”。

现在 create 命令起作用了,我假设如果我想覆盖配置,虽然我没有尝试过,但我可以在那时这样做。

我在什么时候不确定,但似乎我需要重新启动 SOLR 服务器(可能在创建命令之后)才能找到状态等的所有内容......我可能记错了,因为我经历过它所以很多次。如果在创建命令后有疑问,请尝试重新启动服务器。(这可以是正确解析的 IP 地址或名称)

在对@Mani 推荐的程序进行了这些细微修改之后,我在不同的 VM 上分别获得了一个领导者和一个“追随者”——在 /opt/solr/server/solr 目录(在本例中为 fooCollection)中,我能够发送数据到一个并通过管理控制台搜索另一个,点击 IP 地址。

==============

变化

阅读本文的人可能想尝试的一件事就是在 Zookeeper 中创建另一个“节点”(例如 solr5_4)。

我试过这个,它就像一个魅力。在您看到与 Zookeeper ensemble 关联的 /solr chroot 的任何地方,您都可以将其替换为 /solr5_4。这将允许旧的 SOLR VM 在您构建新的 SOLR 5.4“环境”时继续在 Prod 中运行,并且可以将相同的 Zookeeper VM 用于两者——因为不同的 chroot 应该保证没有交互或重叠。

同样,在您进行配置上传之前不会创建 Zookeeper 中的“节点”,但您需要像这样启动 SOLR 过程,否则您稍后会处于错误的上下文中。请注意“solr5_4”作为 chroot。

一旦完成测试,solr5_4“环境”就变成了对 Prod 重要的东西,SOLR 4.x VM 和 solr 的 Zookeeper“节点”可以被删除。将负载平衡器指向新的 SOLR 虚拟机并在用户没有注意到的情况下进行切换应该是一件相当简单的事情。

此策略适用于 SOLR 6、6.5、7 等。

此命令还用于添加集合/核心。但是,必须首先运行 solr 服务器。

===================

用作替换升级

如果不是很明显,这种技术(特别是如果在 Zookeeper 中使用 /solr5_4 之类的“新”chroot 或类似的东西)可以让您尽可能长时间地让旧版本的 SOLR 运行。如果需要,允许重新索引所有数据需要几天时间。

我还没有尝试过,但我猜索引的备份也可以放入新机器中。

我只是想让读者明白,这是一种旨在使升级真正降低压力和直接的方法。(不需要就地升级,只需构建新的虚拟机并安装最新版本的 SOLR。)

这将允许在不影响 prod 的情况下进行切换,直到您准备好放下锤子并将负载均衡器重新定向到新的 SOLR ip 地址(当然,您已经测试过了……)

这里的一个假设是您有资源来启动一组 SOLR VM 或物理服务器,以匹配您在生产中已有的任何内容。显然,如果您的资源仅限于您拥有的机器或虚拟机,则就地升级可能是您唯一的选择。

0 投票
2 回答
3488 浏览

field - schema.xml 从 Solr4 更改为 Solr5

我正在从 Solr 4.6.0 迁移到 5.4.0。我们选择使用旧的 schema.xml 而不是 managed_schema,因为我们有很多 copyFields。启动 solr 服务器,我们得到了这个错误:

[schema.xml] 字段类型“text_general”的插件初始化失败:[schema.xml] 分析器/过滤器的插件初始化失败:错误实例化类:'org.apache.lucene.analysis.core.StopFilterFactory'

在谷歌上搜索,我们看到 StopFilterFactory 还没有被弃用。可能是什么问题呢?

此外,没有关于如何在 Solr5 中使用 Solr4 中的模式的全面指南。有什么建议么?

谢谢

0 投票
1 回答
116 浏览

solr - 将大量 xml 文件索引到 solr 5

我正在尝试将约 100 万个 xml 文件索引到 Solr 5。我可以想到以下几种方法:

  1. 将所有 xml 文件转储到一个目录中,然后使用 post.jar
  2. 在我看来,数据导入处理程序也可以用于递归导入 xml 文件

还有其他方法吗?