问题标签 [booleanquery]
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.
elasticsearch - 弹性查询 DSL:术语过滤器中的通配符?
我正在尝试使用术语过滤器过滤文档。我不确定如何在过滤器中引入通配符。我试过这样的事情:
但是我得到了 SearchParseException 。有没有办法在过滤器框架中使用通配符?
elasticsearch - Elasticsearch 看似随机的评分和匹配
我正在使用bool
搜索来匹配多个字段。这些字段已在索引时使用多个过滤器进行了分析,但主要使用edge_ngram
.
我遇到的问题是得分似乎悬而未决。我希望我的搜索与我的第一个领域相savvas
匹配,但它们的得分要晚得多。例如,按分数顺序搜索返回:first_name
Savvas
savvas
我已将字段中搜索词的边缘 n-gram 以外的字符替换为-
并修改了电子邮件的长度以保护身份。
ssssssssssssssss
尽管在我的数据中不存在,但事实上搜索会返回其中s
字符数最多的项目。我不希望发生的事情,因为我没有对我的搜索进行任何手动 ngram。
当我尝试搜索电话号码时也会出现此问题,78
当搜索782
具有782
精确 ngram 的电话号码时,我匹配包含字符的任何电子邮件。
似乎elasticsearch也在我的搜索查询上执行ngram,而不仅仅是字段并将两者进行比较,并且以某种方式支持更短的匹配到更大的匹配。
这是我的查询:
以及与之配套的索引设置(为冗长而道歉,但我不想排除任何可能重要的内容):
我已经使用 Kopf 插件的分析器测试了索引设置,它似乎创建了正确的令牌。
理想情况下,我只会与我的索引创建的标记完全匹配,并在我的一个 bool 的 should 查询中优先考虑更精确的匹配,而不是优先考虑多个 bool should 匹配。
但是,如果至少它只匹配确切的标记,我会很高兴。我不能使用term
搜索,因为我的搜索字符串本身需要被标记化,而无需对其应用任何 ngram。
总结一下我的要求:
- 在任何单个字段中通过最大可能匹配得分。
- 然后按任何单个字段中可能匹配的最低偏移量进行评分。
- 然后按匹配的字段数评分,优先考虑较低的偏移匹配
- - 更新: - -
我使用 a 得到了更好的结果dis_max
,它似乎成功地匹配了多个 ngram 匹配的更大 ngram 匹配,但phone
仍然难以查询的字段除外。这是新的查询:
solr - 如何使用环绕查询解析器否定 solr 查询
有没有办法否定 solr 环绕查询?我在 fq 字段中使用它,如果这给了我更多否定结果的选项。
我通常通过在前面加上“-”来否定过滤器,例如,
但是,当您使用环绕查询执行此操作时,您会收到错误:
好的,所以也许“-”是不允许的,你不能有一个孤独的 NOT。这有效:
但这失败了
python - Pandas 多索引布尔索引
因此,给定一个多索引数据框,我想只返回满足多索引中较低索引所有级别条件的行。这是一个小的工作示例:
出去:
现在,我想返回c > 1
. 例如,我想做类似的事情
出去:
但我想得到
出去:
关于如何以最有效的方式做到这一点的任何想法?
elasticsearch - 在 Nest Elasticsearch 中使用 bool 组合查询
我需要使用 NEST 客户端从 ES 获取文档,该客户端在两个字段上具有多个 And/OR 条件。
我的查询是:
下面是我的代码:
当我尝试此代码时,它适用于不能出现在结果中的年份,但适用于用户应该选择的格式,尽管它们可用,但它不会显示那些选定的格式。我还使用了“必须”而不是“应该”,但它根本没有检索到任何东西。
有没有人遇到过类似的问题?
elasticsearch - 带有荧光笔和 Bool 查询的 Elastic Search 2.0/2.1 问题
我在 Elastic 2.0 和 2.1 中突出显示时遇到问题 - 它返回的信息比我认为的要多。
我正在构建一个布尔查询(过滤后的查询关键字在 2.0+ 中已弃用,因此我正在尝试更新我的语法)。我正在查询中构建一个必须部分和一个过滤部分,然后是一个突出显示信息的请求。
文档说在查询上下文或过滤器上下文中使用查询,但荧光笔似乎没有表示这种区别。
这是我的完整查询:
所以这个查询按预期工作 - 我们正在查询东方或西方的术语,我们正在过滤作为我们安全要求的一部分的 Id 字段的文档,然后我要求突出显示信息。
然而,缺点是突出显示信息包含我在过滤器中提交的每个值的每个实例(在本例中为 1、2 或 3)匹配我文档任何部分的任何字段中的任何值的每个实例,如下所示:
如何让荧光笔匹配我在必须部分中的查询,但忽略过滤器?我认为它应该忽略作为过滤器一部分的突出显示匹配项,特别是当它突出显示包含值的字段被请求过滤特定字段时,但它在我的文档中的任何位置使用该值。不知何故,这似乎是错误的,但也许这是我的理解。
作为一个仅供参考,如果我将 require_field_match 设置为 TRUE,那么我只会得到与过滤器匹配的命中,而不会得到与查询匹配的命中。
我无法指定一个字段来为其生成突出显示信息,而我们使用 Elastic 作为搜索一旦找到任何地方模型,所以我不知道我的结果将从哪里返回。
你能看出我做错了什么吗?理解这一点将不胜感激。
c# - BooleanQuery 无法使用 Lucene.net 3.0.3
为什么在 Lucene.net 上使用 BooleanQuery 时第一个查询有效,而第二个查询无效?
这是在字段 SHOPPING 上索引的示例:
出售鞋子
鞋子和配饰的便宜货。
购买便宜的鞋子、运动鞋和高跟鞋!
第一个查询(效果很好,它返回所有三个索引)。
第二个查询(不返回任何内容,条件是:返回所有带有 'shoes' 但不带 'accessories' 的术语)。
mysql - 如何索引一个广泛的布尔值表
我的问题是当您的客户使用很多小字段时建立索引。
考虑搜索以下内容:(无法更改,这是客户提供的)
但它的范围要广得多,而且类别不仅仅是 Zone。用户将寻找与至少一个选定区域匹配的 sku。我打算查询这个(如果用户检查了“zone2,zone4,zone6”)
像这样使用多层索引进行索引是否有任何优势:
还是只有在用户检查 zone1 时才有用?
谢谢,罗伯
elasticsearch - Nest ElasticSearch:使用嵌套查询和嵌套对象的布尔搜索
我正在使用 Nest Elastic 并使用 Head 插件为布尔搜索构建查询,我正在组合多个查询
数据库结构和弹性映射注意事项
- 数据库中的每个文档都链接到特定的 profileId,而 profileId 又具有多个属性
- 每个文档都有多个与之关联的属性值
在这个查询中,我试图获取所有具有特定配置文件和属性值 > 30 的文档,记住这个属性应该只有属性 ID 2。
SQL 查询:
选择 av.*, d.name from document d inner join attributeValue av on d.DocumentId = av.DocumentId where d.profileid = 1 and av.AttributeId = 2 and av.Intvalue >30
弹性查询
问题
结果还包含一个具有以下属性值的文档
- 属性值 = 3 和 attributeId = 2(值 < 30)
- 属性值 = 34,但 attributeId 不同于 2 (不正确)
不得包含此文件,因为它不能满足我的需要。
我怎样才能建立这个查询?
dynamic - Nest Elastic - 构建动态嵌套查询
我必须使用 Nest 查询嵌套对象,但是查询是以动态方式构建的。下面是演示以静态方式对嵌套“书籍”使用查询的代码
问题是我需要以动态方式为“书籍”组合多个查询(使用 And,OR 运算符)。例如,获取满足这些条件的书籍:
- 条件 1:作者为“X”且 isbn 为“1”的书籍
- 条件 2:作者为“X”且 isbn 为“2”的书籍
- 条件 3:作者为“Z”且 isbn 为“3”的书籍
- 其他条件:......
现在,嵌套查询中的过滤器应该检索书籍,如果:
条件 1和条件 2或条件 3
假设我有包含以下属性的类名 FilterOptions:
- 字段名
- 价值
- 运算符(将结合下一个过滤器)
我将在给定的 FilterOptions 数组上循环以构建查询。
问题:
我应该使用什么来构建嵌套查询?它是 FilterDescriptor 吗?如何将它们组合起来,将嵌套查询添加到搜索方法中?
请推荐任何有价值的链接或示例?