问题标签 [dismax]
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.
sorting - 我如何在 solrJ 中使用查询语法?
我需要在 solrJ 中实现这个查询
当我直接添加到我的代码中时
这会引发错误
有人可以帮忙吗?
solr - 如何使 SOLR 搜索功能根据搜索输入顺序返回结果
我使用 SOLR 对多值字段执行文本查询,但它没有按照输入的内容返回。我在字段上使用带有标准标记器的 edimax。
例如,我搜索文本“AB C”,但我得到奇怪的订单结果结果#1:“AC B”结果#2:“AB C”结果#3:“AC B”
我怎样才能让结果#2首先出现。
示例查询:localhost:8983/solr/test/select?defType=edismax&fl=text,score&mm=100%&q=AB C&qf=text
响应:{“文本”:“AC B”,“分数”:16.770645},{“文本”:“AB C”,“分数”:16.770645},{“文本”:“AC B”,“分数”: 16.770645}, }
solr - 如何组合 Solr 嵌套文档中的父子节点
我是 lucence、solr 查询的新手,我对如何查询嵌套文档有疑问。
我有嵌套的文档索引,如下
我如何搜索标题:SolrCloud,并列出所有孩子的父母?如
其中列出了文档 4(Sorl1、Solr2、Solr3)和文档 6(Solr5)的所有父项。并且文档的深度不是常数。
solr - 如果与查询字符串的 50% 匹配,如何查询 Solr 以获取文档?
我使用的是 Solr 7.6,文档结构如下:
所有字段都使用 StandardTokenizerFactory 标记器定义。
当我查询“source_text”:“天空”时,
结果集应仅包含第一个文档。
在第二个文档中,字段 "source_text":"the sky is also called the celestial sphere" 包含 8 个术语,而查询字段 "source_text":"the sky" 仅包含 2 个术语,因此至少 50% 的匹配条件是未完成,因此第二个文档不会在结果集中。
有没有办法让文档匹配至少 50% 的查询字段术语/标记?
提前致谢。
solr - dismax 查询解析 - mm 属性
这是我在响应头中看到的。
mm=2 这意味着 2 个可选子句应该匹配。q.op 是 AND - 我假设子句之间的条件是 AND
我希望以下字段不匹配:
但它们是结果的一部分。
谁能帮我理解这里的行为?
我怀疑是因为^3
在tokyo
现场。但这就是推动因素。
solr - 尝试在 SOLR 上使用“bf”时出错“类型不匹配:时间戳被索引为 SORTED_NUMERIC”
我想在我的搜索中使用“Boost-Function”功能(在其他情况下和字段工作得很好),以提升具有更高“时间戳值”的文档,以提高这些文档的相关性分数,但不是必需的,绝对按时间戳排序。不幸的是,我在尝试这样做时遇到了这个错误:
'bf' 查询是:
(有点傻,但只是想看看它是否有效)。
谢谢您的帮助!
elasticsearch - Elasticsearch dis_max 查询,返回完全匹配的查询
让我们假设我想执行这个查询
}
根据 elasticsearch 的文档,此查询返回任何匹配子句中相关性得分最高的文档列表。
但是我如何确定是哪个基础查询导致文档出现在结果列表中?如何确定结果是否由于查询列表中的查询 1 或查询 2 而出现?我可以以某种方式为每个结果文档返回这个吗?
elasticsearch - 验证我对 elasticsearch 中 Dismax 查询的理解
我尝试了解 dismax 查询的工作原理,我想验证我的理解,请查看我是否理解正确。
根据文档,dismax 查询是:
一个查询,它生成由其子查询生成的文档的联合,并使用任何子查询生成的该文档的最大分数对每个文档进行评分,加上任何其他匹配子查询的平局增量。
假设,我们的 ES 集群中的总文档如下:
{"FOO":"ABC"},{"FOO":"XYZ"},{"FOO":"ABC XYZ"},{"FOO":"ABC DEF"},{"FOO":"DEF"}
并且 dismax 查询是:
因此,根据文档,让我们首先找出 dismax 的子查询返回的文档的联合。文件的联合将是{"FOO":"ABC"},{"FOO":"XYZ"},{"FOO":"ABC XYZ"},{"FOO":"ABC DEF"}
. 根据下一步,我们需要使用任何子查询产生的该文档的最高分数对每个文档进行评分。这将是这样的:
{"FOO":"ABC"}
将被计分,{"match":{"FOO": "ABC"}}
并{"match":{"FOO": "XYZ"}}
使用返回的最高分。同样,{"FOO":"XYZ"}
将在 和 上进行评分,{"match":{"FOO": "ABC"}}
并将{"match":{"FOO": "XYZ"}}
使用返回的最大分数,这将对所有文档并集进行,最后文档将以排序方式返回。
这是 dismax 查询的工作原理吗?还是我误解或错过了什么?
solr - Solr:在 Dismax(或 Edismax)查询中指定自定义析取词
典型的 dismax(或 edismax)查询使我们能够用qf(例如:field1,field2^10)和q(例如:'test-query')参数来表达我们的需求。Solr 然后在内部生成一个查询,其形式为:
上述查询中的“析取”是
上述析取词在查询结构方面是同质的(在每个析取词中只查找 1 个字段。此外,在字段中查看的值是相同的)。
问题 :
有没有办法提供我们自己的分离表达式的自定义列表。例如,我想要以下 2 个析取词
上述析取项在字段方面是异构的,在这些字段中搜索的值也是异构的。
可能吗 ?如果是,我如何在我的 solr 查询中表达这样的自定义析取词。
================
更新
最大分数查询解析器帮助我解决了我正在寻找的用例。
https://solr.apache.org/guide/8_5/other-parsers.html#max-score-query-parser
elasticsearch - ElasticSearch / Solr dis_max 查询跳过匹配子句
我在一个分片上有一个 Elasticsearch 索引,我正在为此运行一个[dis_max][4]
查询,给定一些用户详细信息
(名字、姓氏、出生日期、地址、电话、用户名、电子邮件等)
从组合了一组标准/匹配子句的索引中查询用户。
例如
- 匹配用户名(
[fuzzy][1]
, boosted 2x) - 应该匹配名字和姓氏(
[bool][3]
结合[match-term][2]
查询 FN 和 LN,提升 1.1 倍) - 必须匹配 FN、LN 和 DOB(
[bool][3]
结合[fuzzy][1]
FN 和 LN 以及[match-term][2]
DOB,提升 3 倍) - 匹配手机(
[match-term][2]
提升 2 倍)
等等
请参阅下面的查询(输入数据模糊):
所有标准都考虑一个分数
,我设置了一个tie_breaker
,0.5
以便结果的分数将是所有分数中的最大值,再加0.5
上其余分数的倍数。
使用很少的输入组合执行查询,
- 在某些情况下,我得到了很好的分数,可以很好地匹配,
- 在其他情况下,即使期望分数相同或足够高,我也会得到非常低的分数,因为似乎跳过了一些最相关的匹配子句。
"explain": true
事实上,我已经在解释中调试了查询执行
- 第一个结果在所有查询子句中得分很高,
- 第二个(从数据中得分应该足够)只是得分较低,并且某些子句没有出现在解释中,就好像它们被排除/忽略了一样。
我想了解为什么在某些情况下会忽略/跳过这些。有人知道这是否可能是 ES 在 Solr 中构建查询的方式中的一个问题?
请参见下面的结果示例(所有数据都被遮盖了,但结果在不同的字段中会非常接近)。