solrj 相关问题

Solrj是一个访问solr的java客户端。它提供了一个java接口来添加,更新和查询solr索引。 SolrJ隐藏了许多连接到Solr的细节,并允许您的应用程序通过简单的高级方法与Solr交互。

Solr 架构 - 复杂类型

我正在尝试创建一个 Solr 模式来存储具有更复杂类型的字段。例如: { “会话ID”:413431, "sessionName":"测试会话" “游戏详细信息...

回答 1 投票 0

Solr 6.6.6 集合恢复导致单节点问题

我有 2 个 SolrCloud 设置节点。版本是6.6.6。我从其他有 4 个集合分片的实例中获取了 Solr 备份。 我已经使用以下命令来收回,效果很好 嗯……

回答 2 投票 0

为什么我有时会在从 8GB 堆的 800MB 索引中获取所有文档时遇到 OOM?

我需要刷新由 SOLR 7.4 管理的索引。我使用 SOLRJ 在具有 8 个 CPU 和 32GB RAM 的 64 位 Linux 机器上访问它(8GB 堆用于索引部分,24GB 用于 SOLR 服务器)。工业...

回答 1 投票 0

Solr 深度分页,无需排序

我有以下在 solr 中索引的 xml: 我有以下在 solr 中索引的 xml: <doc> <field name="title" type="text_general" class="solr.TextField" indexed="true" stored="true" required="true" multiValued="false" >Sharknado 3</field> <field name="author">moriarti</field> <field name="price">20.5</field> </doc> <doc> <field name="title" type="text_general" class="solr.TextField" indexed="true" stored="true" required="true" multiValued="false" >Sharknado</field> <field name="author">moriarti</field> <field name="price">18</field> </doc> <doc> <field name="title" type="text_general" class="solr.TextField" indexed="true" stored="true" required="true" multiValued="false" >Sharknado 2</field> <field name="author">moriarti</field> <field name="price">19.5</field> </doc> 我遇到的下一个问题是,当我进行深度分页时,它迫使我按 id asc 或 id desc 排序,然后我无法按“标题”排序。 我尝试使用默认搜索字段(df),但结果仍然错误。 你知道我该如何解决这个问题,以便我可以按标题订购吗? 字段定义(带有类型等)进入您的模式,而不是更新 XML 中。 按分析的 TextField 排序也不是一个好主意,因为您不会得到您正在寻找的结果。如果您想按文本字段搜索,请按 string 字段排序,或按带有 KeywordTokenizer 和小写过滤器的字段排序(如果您想让排序不区分大小写)。 规则只是 id 字段(或更具体 - uniqueKey 字段可以命名为 id 之外的其他名称,但通常只是 id) - 必须在排序顺序中为 present。它不一定是第一个,它只需要在那里,这样排序就稳定了。 sort=title asc, id asc ..对于使用cursorMarks进行深度分页来说是完全有效的。 评论后进一步解释 Tokenizer 告诉 Solr 如何将输入文本 拆分为所谓的“Tokens”。令牌是正在执行匹配的对象。空白标记生成器会将“这是一个文本”拆分为四个标记:this、is、a 和 text。当您仅搜索 text 或 this text 时,会发生相同的过程,然后比较输入的和存储的标记以查看是否存在匹配。 还会对标记执行排序,因此如果您尝试对文本“c b a”进行排序,它将被标记为 c、b 和 a - 这对于排序来说并不是很有用,因为您希望以 c 开头的任何内容都在 b 之后进行排序,但现在文档拥有三个标记,指示其实际值。这个过程通常会给你带来奇怪和不直观的结果。 相反,请使用 string 字段,因为这会将输入保留为单个标记。如果您存储 a b c,则整个文本将存储为单个标记 - a b c,并且不会分解为更小的片段。这也意味着,只有输入和存储的文本完全匹配时,您才会获得命中,因为它是单个大令牌(而令牌决定匹配)。 但是由于字符串字段不执行任何操作,因此您可能希望将 a 和 A 作为同一字符进行排序,而不是首先对大写字母进行排序。实现此目的的方法是使用一个名为 KeywordTokenizer 的 Tokenizer - KeywordTokenizer 不会将输入文本拆分为标记,而是将所有内容保留为单个标记。这看起来没什么用,因为它与 string 字段的作用相同,但是带有 Tokenizer 的 TextField 允许您将过滤器附加到分析链 - 而字符串字段则不然。因此,您可以 将 LowercaseFilter 添加到链中,因此,为 a 和 A 生成的代币将是相同的 - 在这两种情况下都是 a。 您可以在 schema.xml 中或通过 Schema API 配置字段类型及其关联处理。您可以使用 copyField 告诉 Solr“进入此字段的任何内容也应该添加到另一个字段” - 这样您就可以让您的内容出现在多个字段中并以不同的方式处理 - 一种搜索方式(标记化)例如空格)和一种搜索方式(根本没有标记化)。 您在文档 XML 中的字段之一使用的语法并不适合在该上下文中使用 - 但在 schema.xml 中定义字段时: <field name="title" type="text_general" class="solr.TextField" indexed="true" stored="true" required="true" multiValued="false" /> 在您的文档中应该是: <field name="title">value</field> 处理和参数将基于schema.xml中定义的字段类型。 终于解决了, 在研究了一些关于标记器并尝试了一些事情之后...... First:我修改了 solrconfig.xml 以便能够手动编辑它。 我补充道: <schemaFactory class="ManagedIndexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory> 如此处所示。 第二:我在manage-schema.xml中为我的字段更改了以下内容: <field name="title" type="text_general" multiValued="false" indexed="true" stored="true"/> 第三: 我在 solrj 中按照以下方式按分数和标题排序: query.addSort("score", ORDER.desc); query.addSort("title", ORDER.asc); query.addSort("id", ORDER.desc); 我在 solrj 中也有参数: query.setParam ("df", "title"); 这样就正确返回结果了。 感谢您抽出时间 MatsLindh。

回答 2 投票 0

有 SolrJ 查询生成器吗?

使用 solr 5.2.0 想知道是否有类似于 Elasticsearch 查询构建器 API 的查询构建器 API/Jar/Ckient 或者我们是否必须基本上执行 String Kungfu 来在 Solr 中构建查询?

回答 3 投票 0

收到“集群未找到/未准备好。预期的节点‘/aliases.json’不存在。” Solr Cloud 上出现错误

我们正在尝试升级到Solr 9.6.1和Zookeeper 3.7.1。但是,当使用 SolrJ Api 从 Java 连接到 Solr 时,我们收到以下错误。 无法连接到 172.23.152.117:2181 的集群:clus...

回答 1 投票 0

如何转义 Solr 字段名称中“fl”参数的特殊字符(例如冒号、斜杠、引号...)?

我在 Solr 模式中使用冒号字符命名字段名称。我们需要使用命名空间字符,因为我们有数百个来自不同来源的字段。使用下划线不是

回答 2 投票 0

Solr 字段名称中的冒号如何转义为“fl”参数?

我在 Solr 模式中使用冒号字符命名字段名称。我们需要使用命名空间字符,因为我们有数百个来自不同来源的字段。使用下划线不是

回答 1 投票 0

尝试 Solr 9.3 与 Spring Boot 3

我正在尝试 Solr v9.3 来测试它们的功能。我使用 Spring Boot v3.1.1 创建了一个测试应用程序,并包含了一个使用 EmbeddedSolrServer 的小测试。 没有那么多代码,而且是...

回答 1 投票 0

SolrJ 对客户端的困惑

SolrJ 提供了许多不同类型的 SolrClient。它们列于此处:https://solr.apache.org/guide/solr/latest/deployment-guide/solrj.html#types-of-solrclients 现在,如果您只是想要...

回答 1 投票 0

SOLR“facet.prefix”未按预期工作

我在 solr 查询中使用facet.prefix 功能。但它似乎没有按预期工作。我的示例 solrfacet.prefix 行为“f”。 storeStockLevelSizes_string_mv.facet.prefix=123' 我期待...

回答 1 投票 0

SolrJ deleteById 不会删除 Solr 中的数据

我有一个 Solr 集合,有 6 个基于年份的分片 - 2019 到 2024。我使用此方法删除该集合中的一些文档: invoke(() -> solrClient().deleteById(collectionName, ids ));...

回答 1 投票 0

无法使用其 IP 地址连接到 docker 容器

我正在使用 docker-compose 启动一些容器,这些容器形成 Solr 和 Zookeeper 节点的集群。 这是我的撰写文件(取自此处): 版本:'3.8' 服务: 索尔1: 图片:solr:...

回答 3 投票 0

SolR PreserverMulti 仅适用于特定领域

我正在使用 SolR 来搜索提供大量元数据的文档。 (平均每个文档超过 2 Mb) 由于性能问题,我专注于优化要传输的数据量。 关于q...

回答 1 投票 0

SolR 和通配符。允许部分关键字

我正在尝试在 SolR 查询过程中使用通配符功能 我想在我的索引中找到包含 fran* 文本的所有文档。 那么,为什么我的通配符语法不起作用? 查询详情 这是我的...

回答 1 投票 0

org.apache.solr.client.solrj.impl.BaseHttpSolrClient$RemoteSolrException:添加字段“vector”时出错

我无法根据文档添加“向量”字段。我尝试了多种方法,但没有奏效。 final SolrInputDocument d1 = new SolrInputDocument(); d1.setField("id",...

回答 0 投票 0

Solr 9.1.0 中的错误:文档在 field="text" 中包含至少一个巨大的术语(其 UTF8 编码长于最大长度 32766)

如何修复此错误以在 Solr 9.1.0 中索引大文件?在网上找到的一些解决方案要么适用于旧版本,要么不适用于最新版本的 solr 9.1.0: 这个错误发生在我...

回答 0 投票 0

Solr - 过滤子文档的两个字段

我在 Solr 中索引了以下文档: { “id”:“a946c9c8-9adf-4f59-bf96-19612a1eeaa2”, "content_type": "门票", “标题”:...

回答 0 投票 0

Solr6 中插入/更新的未定义字段问题

我正在尝试将 solr 文档插入/更新到 solr 集合中 “ACCT_ID:”1234“ "ACCOUNT_NAME:"测试", "ACCT_地址":"", 在 Solr5 中我没有开始......

回答 0 投票 0

如何使用 CloudSolrClient 在多数据中心中处理其中一个 zookeeper 主机宕机的异常

请在这里帮助我。我有三个数据中心可用于 zookeeperhosts 的 solr 我总是写入这三个数据中心集合。客户集合在所有数据中心都可用...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.