问题标签 [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.

0 投票
1 回答
36777 浏览

elasticsearch - 弹性查询 DSL:术语过滤器中的通配符?

我正在尝试使用术语过滤器过滤文档。我不确定如何在过滤器中引入通配符。我试过这样的事情:

但是我得到了 SearchParseException 。有没有办法在过滤器框架中使用通配符?

0 投票
1 回答
501 浏览

elasticsearch - Elasticsearch 看似随机的评分和匹配

我正在使用bool搜索来匹配多个字段。这些字段已在索引时使用多个过滤器进行了分析,但主要使用edge_ngram.

我遇到的问题是得分似乎悬而未决。我希望我的搜索与我的第一个领域相savvas匹配,但它们的得分要晚得多。例如,按分数顺序搜索返回:first_nameSavvassavvas

我已将字段中搜索词的边缘 n-gram 以外的字符替换为-并修改了电子邮件的长度以保护身份。

ssssssssssssssss尽管在我的数据中不存在,但事实上搜索会返回其中s字符数最多的项目。我不希望发生的事情,因为我没有对我的搜索进行任何手动 ngram。

当我尝试搜索电话号码时也会出现此问题,78当搜索782具有782精确 ngram 的电话号码时,我匹配包含字符的任何电子邮件。

似乎elasticsearch也在我的搜索查询上执行ngram,而不仅仅是字段并将两者进行比较,并且以某种方式支持更短的匹配到更大的匹配。

这是我的查询:

以及与之配套的索引设置(为冗长而道歉,但我不想排除任何可能重要的内容):

我已经使用 Kopf 插件的分析器测试了索引设置,它似乎创建了正确的令牌。

理想情况下,我只会与我的索引创建的标记完全匹配,并在我的一个 bool 的 should 查询中优先考虑更精确的匹配,而不是优先考虑多个 bool should 匹配。

但是,如果至少它只匹配确切的标记,我会很高兴。我不能使用term搜索,因为我的搜索字符串本身需要被标记化,而无需对其应用任何 ngram。

总结一下我的要求:

  • 在任何单个字段中通过最大可能匹配得分。
  • 然后按任何单个字段中可能匹配的最低偏移量进行评分。
  • 然后按匹配的字段数评分,优先考虑较低的偏移匹配

- - 更新: - -

我使用 a 得到了更好的结果dis_max,它似乎成功地匹配了多个 ngram 匹配的更大 ngram 匹配,但phone仍然难以查询的字段除外。这是新的查询:

0 投票
2 回答
1320 浏览

solr - 如何使用环绕查询解析器否定 solr 查询

有没有办法否定 solr 环绕查询?我在 fq 字段中使用它,如果这给了我更多否定结果的选项。

我通常通过在前面加上“-”来否定过滤器,例如,

但是,当您使用环绕查询执行此操作时,您会收到错误:

好的,所以也许“-”是不允许的,你不能有一个孤独的 NOT。这有效:

但这失败了

0 投票
1 回答
218 浏览

python - Pandas 多索引布尔索引

因此,给定一个多索引数据框,我想只返回满足多索引中较低索引所有级别条件的行。这是一个小的工作示例:

出去:

现在,我想返回c > 1. 例如,我想做类似的事情

出去:

但我想得到

出去:

关于如何以最有效的方式做到这一点的任何想法?

0 投票
2 回答
1638 浏览

elasticsearch - 在 Nest Elasticsearch 中使用 bool 组合查询

我需要使用 NEST 客户端从 ES 获取文档,该客户端在两个字段上具有多个 And/OR 条件。

我的查询是:

下面是我的代码:

当我尝试此代码时,它适用于不能出现在结果中的年份,但适用于用户应该选择的格式,尽管它们可用,但它不会显示那些选定的格式。我还使用了“必须”而不是“应该”,但它根本没有检索到任何东西。

有没有人遇到过类似的问题?

0 投票
1 回答
433 浏览

elasticsearch - 带有荧光笔和 Bool 查询的 Elastic Search 2.0/2.1 问题

我在 Elastic 2.0 和 2.1 中突出显示时遇到问题 - 它返回的信息比我认为的要多。

我正在构建一个布尔查询(过滤后的查询关键字在 2.0+ 中已弃用,因此我正在尝试更新我的语法)。我正在查询中构建一个必须部分和一个过滤部分,然后是一个突出显示信息的请求。

文档说在查询上下文或过滤器上下文中使用查询,但荧光笔似乎没有表示这种区别。

这是我的完整查询:

所以这个查询按预期工作 - 我们正在查询东方或西方的术语,我们正在过滤作为我们安全要求的一部分的 Id 字段的文档,然后我要求突出显示信息。

然而,缺点是突出显示信息包含我在过滤器中提交的每个值的每个实例(在本例中为 1、2 或 3)匹配我文档任何部分的任何字段中的任何值的每个实例,如下所示:

如何让荧光笔匹配我在必须部分中的查询,但忽略过滤器?我认为它应该忽略作为过滤器一部分的突出显示匹配项,特别是当它突出显示包含值的字段被请求过滤特定字段时,但它在我的文档中的任何位置使用该值。不知何故,这似乎是错误的,但也许这是我的理解。

作为一个仅供参考,如果我将 require_field_match 设置为 TRUE,那么我只会得到与过滤器匹配的命中,而不会得到与查询匹配的命中。

我无法指定一个字段来为其生成突出显示信息,而我们使用 Elastic 作为搜索一旦找到任何地方模型,所以我不知道我的结果将从哪里返回。

你能看出我做错了什么吗?理解这一点将不胜感激

0 投票
2 回答
1111 浏览

c# - BooleanQuery 无法使用 Lucene.net 3.0.3

为什么在 Lucene.net 上使用 BooleanQuery 时第一个查询有效,而第二个查询无效?

这是在字段 SHOPPING 上索引的示例:

出售鞋子

鞋子和配饰的便宜货。

购买便宜的鞋子、运动鞋和高跟鞋!

第一个查询(效果很好,它返回所有三个索引)。

第二个查询(不返回任何内容,条件是:返回所有带有 'shoes' 但不带 'accessories' 的术语)。

0 投票
2 回答
46 浏览

mysql - 如何索引一个广泛的布尔值表

我的问题是当您的客户使用很多小字段时建立索引。

考虑搜索以下内容:(无法更改,这是客户提供的)

但它的范围要广得多,而且类别不仅仅是 Zone。用户将寻找与至少一个选定区域匹配的 sku。我打算查询这个(如果用户检查了“zone2,zone4,zone6”)

像这样使用多层索引进行索引是否有任何优势:

还是只有在用户检查 zone1 时才有用?

谢谢,罗伯

0 投票
1 回答
851 浏览

elasticsearch - Nest ElasticSearch:使用嵌套查询和嵌套对象的布尔搜索

我正在使用 Nest Elastic 并使用 Head 插件为布尔搜索构建查询,我正在组合多个查询

数据库结构和弹性映射注意事项

  1. 数据库中的每个文档都链接到特定的 profileId,而 profileId 又具有多个属性
  2. 每个文档都有多个与之关联的属性值

在这个查询中,我试图获取所有具有特定配置文件和属性值 > 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

弹性查询

问题

结果还包含一个具有以下属性值的文档

  1. 属性值 = 3 和 attributeId = 2(值 < 30)
  2. 属性值 = 34,但 attributeId 不同于 2 (不正确)

不得包含此文件,因为它不能满足我的需要。

我怎样才能建立这个查询?

0 投票
2 回答
5108 浏览

dynamic - Nest Elastic - 构建动态嵌套查询

我必须使用 Nest 查询嵌套对象,但是查询是以动态方式构建的。下面是演示以静态方式对嵌套“书籍”使用查询的代码

问题是我需要以动态方式为“书籍”组合多个查询(使用 And,OR 运算符)。例如,获取满足这些条件的书籍:

  1. 条件 1:作者为“X”且 isbn 为“1”的书籍
  2. 条件 2:作者为“X”且 isbn 为“2”的书籍
  3. 条件 3:作者为“Z”且 isbn 为“3”的书籍
  4. 其他条件:......

现在,嵌套查询中的过滤器应该检索书籍,如果:
条件 1条件 2条件 3

假设我有包含以下属性的类名 FilterOptions:

  1. 字段名
  2. 价值
  3. 运算符(将结合下一个过滤器)

我将在给定的 FilterOptions 数组上循环以构建查询。

问题:

我应该使用什么来构建嵌套查询?它是 FilterDescriptor 吗?如何将它们组合起来,将嵌套查询添加到搜索方法中?

请推荐任何有价值的链接或示例?