问题标签 [solr7]
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.
solr - Solr 7 - 具有相同前缀的短语匹配
我想检索与令牌匹配的结果(edgeNgramed)。对于不共享前缀的令牌,它按预期工作。但是对于共享前缀的令牌,Solr 不能按预期工作。例如:如果索引词是bird box
并且查询是bird b
,则 solr 将返回仅具有bird
并且可能带有标记bird box
的结果(由于我们的索引很大,我还没有验证它)
查询构造
Solr 版本 - 7.7.1
这是我的分析器链。
关于如何确保在任何其他只有 . 的内容之前bird box
被召回的内容的任何想法?bird b
bird
笔记
- 已经看到了在不同领域索引令牌的 stackoverflow 问题,我们不想遵循这种方法,索引可能会变得太大,我们的令牌长度实际上可以是任何东西。
- 我们刚刚从 Solr 4.10 迁移到 Solr 7.7.1,两个版本的行为相同。尚未针对此用例探索 Solr 8。
- 不想将所有前缀(压缩空间)存储在多值字段中。例如:
b
,bi
,bir
,bird
,birdb
,birdbo
&birdbox
因为这会导致一些非常常见的用例的过度召回。这意味着它打破的案例比实际解决的要多。
solr - 如何实施 Solr 重复数据删除?签名返回 0000000000000000
我正在尝试通过根据此链接更新 solrconfig.xml 和 schema.xml 在 Solr 中实现重复数据删除: https ://lucene.apache.org/solr/guide/7_6/de-duplication.html
重复数据删除生成文件签名,但签名设置为 0000000000000000(16 个零)。我看到另一个帖子问同样的问题,但没有人回答: Solr Deduplication (dedupe)giving all zeros in signatureField
笔记:
版本:Solr 7.6.0
在查看源代码中的包名称后,我将许多 solr.processor.* 类更新为 solr.update.processor.*: https ://github.com/apache/lucene-solr/tree/branch_7_6/solr/核心/src/java/org/apache/solr/update/processor
我的文件设置:
solrconfig.xml:
架构.xml:
任何帮助表示赞赏!:)
solr - 拼写检查器为正确的单词提供建议
查询包含 5 个集合的别名并获得正确单词的建议。例如:- Collection1 中有“轮胎政策” Collection2 中有一个词“礼貌”。当我查询“轮胎政策”时,它会检查并返回“礼貌”作为“政策”的建议。PS - 在查询期间我通过
没有它,拼写检查器不会纠正错误的拼写。
我正在使用 DirectSolrSpellchecker 调整
<float name="maxQueryFrequency">0.01</float>
为
但遇到同样的问题。
直接 solr 拼写检查代码-
处理程序内的拼写检查器
由于“maxqueryfreqency”设置为“1”,因此不应有任何策略建议。
solr - Solr Repeaters/Slaves 复制是 Master 上的每次提交,而不是 Optimize
我有一个主中继从配置。使用此复制配置设置主/从/中继器<str name="replicateAfter">optimize</str>
,下面的完整配置
中继器配置为每 1 秒轮询一次。N 个从站被配置为以不同的间隔轮询,以免下载请求压倒转发器,例如:2、4、6、8 分钟。两者都通过 java 启动命令 args。
现在,鉴于我在 master 上每 2 小时对 Master 索引进行一次优化,我希望 master 仅在优化后才能提供可复制的版本。但似乎,在X
(可配置的)分钟后发生的每次提交后,主节点生成增加,中继器和从节点获得未优化的(但具有最新提交数据的最新状态)。
看到主生成增量后的中继器/从属日志
问题:
我如何绝对确保仅在我发出的优化命令完成后才允许从 Master 到 Repeaters/Slaves 的索引流过?
笔记
一旦我发出优化,具有 1 个段的优化索引确实会按预期流向中继器/从属服务器,但发生在主服务器上的中间提交也会导致中继器/从属服务器下载新索引的一部分,使其段数 > 1,并且在段上搜索时减慢搜索速度size > 1 比在段大小 1 上搜索的成本更高。我只希望在发出定期(以代码编程)优化命令之后而不是在每次提交之后才需要新索引。我实际上删除了 master 上的提交持续时间,然后它只在优化后增加了它的生成,但是如果我完全删除提交,那么我们就有可能在 2 个优化周期之间丢失未提交的数据,并且机器恰好在这 2 个周期之间死亡。
Solr/luceneMatchVersion 版本
7.7.1
我也尝试添加 mergePolicyfactor 配置,但行为仍然相同
solr - 将 ContextField 添加到 SOLR 建议器
我尝试在 SOLR 建议器中使用 contextField(运行 SOLR 7)
但是当我尝试构建建议器时,出现错误
原因:java.lang.IllegalArgumentException:文档在 field="exacttext" 中包含至少一个巨大的术语(其 UTF8 编码长于最大长度 32766),所有这些都被跳过。请更正分析器以不产生此类术语。第一个巨大术语的前缀是...
exacttext
不过,在我的整个设置中没有命名字段。
当我使用 FreeTextLookupFactory 时,这不会发生,但是我当然不能使用 contextField。
我尝试添加
也
到托管模式,但这也不起作用。
这是我尝试使用的 searchComponent:
这是托管模式中建议者的配置:
-- 字段部分 ---
azure - Solr 7.6.0 是否存在不能使用系统全部数据传输容量的限制?
为了了解 Solr 7.6.0 在 Azure VM 上的性能(特别是副本恢复场景),我进行了性能测试。
目标是找出故障副本节点在分片中恢复的速度。
我做了什么 ?
- 我进行了 48 小时的负载测试
- 通过在每个分片开始托管 250+ GB 数据(接近 32 核机器的 VM 的 RAM)时手动重新启动副本节点来捕获副本节点的完整恢复时间
实验结果
该实验最大的红色标记之一是复制品恢复所需的时间:
350 GB 恢复大约需要 2 小时,这意味着 350 / (2*60) = 2.91 GB / 分钟,即 2.91 * 8 / 60 = 0.4 Gb/s(不是小 b 表示位,而不是字节)。
因此,Solr7.6.0 似乎只能使用 0.4 Gb/s 带宽将数据从其领导者传输到失败的副本。
为了确认相应的 VM 是否支持更多带宽,我运行了
iperf3
在这些虚拟机上,发现它支持 11 Gb/s(但是根据 Azure,它应该是 16 Gb/s,这在此处不会破坏交易)。
所以,这里的问题是为什么 Solr 只能利用 0.4 Gb/s 带宽而 VM 能够支持 ~11 Gb/s ?
solr - “如何解决 Solr 7 中的‘服务器错误’”
我想在我的 Windows 10 中安装 solr。但我遇到了这个错误,我什至有 jdk 版本 1.8.0_112,我的 solr 版本是 solr_7.7.2。
我已遵循网站上提供的每一步
ERROR: Solr server directory E:\\server not found
java - SOLR 7.5 崩溃
我正在从 Wordpress 插件重建我的索引,这使用了参数化 solr-php-client。通常,在更新索引时,SOLR 会崩溃并显示如下错误消息。不幸的是,我对调试 SOLR/Java 应用程序不太熟悉。到目前为止,我尝试的是增加 Java 堆栈 sie(JVM 启动中的 -Xss256k -> -Xss1M),在我看来,这在 64 位 Java 9(OpenJDK)上太低了。非常感谢任何帮助或线索。
solr - 如何按solr中最低价格的子文档对父文档进行排序
我是 solr 的新手,我想按价格最低的子文档对父文档进行排序。请参阅下面提到的示例数据。
我想得到下面提到的格式
我尝试了下面提到的链接,它不适用于我的问题。
sort={!parent which=type:parent score=max v='+type:child +{!func}price'} desc