问题标签 [query-parser]

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 回答
684 浏览

solr - 将定制的 Lucene QueryParser 部署到 Solr 核心的最简单方法

我通过更改 QueryParser.jj 语法对 Lucene QueryParser 进行了自定义。将其部署到 Solr 的一种方法是通过编译新的 lucene 核心来修改 Solr 战争文件。

另一方面,可以将 Solr 级别的新查询解析器作为二进制依赖项(jar)部署到 Solr 核心的 lib 目录中,这非常方便。

有没有类似的方法来部署我的自定义?我可以将我的 lucene-core 二进制依赖项部署到核心的 lib 目录或 Solr 战争文件以外的其他地方吗?

UPD:对答案的评论包含我实施背后的思考过程。

UPD2:我写了一篇关于我的发现的博客文章:http: //dmitrykan.blogspot.fi/2014/03/implementing-own-luceneqparserplugin.html

0 投票
0 回答
364 浏览

java - 在 Elasticsearch 的客户端而不是服务器上分析查询

我们正在将基于 Lucene 的搜索代码库迁移到 Elasticsearch。我们遇到的主要问题是我们应该如何迁移我们QueryParser的 s.

在我们的旧解决方案中,QueryParsers 接受人工输入的查询字符串,并将其转换为 Lucene 的Query对象,然后将其输入到 Lucene 的 IndexSearcher。但是,在 Elasticsearch 中,我们不直接与 IndexSearcher 交互,而是只能使用Query DSL在客户端构建查询并将 JSON 发送到 Elasticsearch 服务器。Elasticsearch 服务器然后(可能)重写/分析 JSON 查询以构建 Lucene 查询。

为了利用 QueryParsers 中现有的复杂逻辑,我们决定可以通过以下方式坚持我们的旧方法:

  1. 明确告诉 Elasticsearch在搜索时间内不要分析任何查询。
  2. 在 Java 客户端中进行所有与查询相关的分析(标记化、同义词等)。
  3. 相信 Elasticsearch 的 Query DSL 是一种与 Lucene 的一对一映射Query

不用担心评分过程,我们将评分器脚本编写为 Elasticsearch 插件。

问题是:

  1. 这种方法可行吗?
  2. 这样做的潜在问题是什么?
  3. 最佳做法是什么?

提前致谢!

0 投票
1 回答
237 浏览

lucene - Lucene QueryParser Analyzer 不一致

我有一个非常简单的分析器,它试图用空格替换正斜杠 (/)。因为QueryParser强制我在解析之前用斜杠转义字符串,所以我在分析器中添加了一个MappingCharFilter,用一个空格替换“\/”。分析器定义如下:

然后我在 QueryParser 中使用这个分析器来解析带有破折号的字符串:

预期的输出将是

但是,我得到:

令人费解的是,当我调试分析器时,它正确地标记了输入字符串,返回两个标记而不是一个。

到底是怎么回事?

谢谢。

0 投票
0 回答
151 浏览

solr - 具有重复参数的 Solr 查询

我尝试从 Solr 查询解析演示文稿 ( http://www.slideshare.net/erikhatcher/sa-22830939 ) 中“扩展”其中一个示例。我想以一种能够使用查询字符串一次检索多个 solr 文档的方式扩展它http://.../solr/docs?id=1&id=2&id=3

requestHandler 的原始配置如下所示:

但这仅适用于单个id参数 ( http://.../solr/docs?id=1) - 我必须使用哪个查询解析器或配置来将其与多个id参数匹配?

谢谢你的帮助。

0 投票
3 回答
39681 浏览

sql - 解析查询是什么意思?

大多数关系数据库通过四个步骤处理 JDBC/SQL 查询:

  1. 解析传入的 SQL 查询
  2. 编译 SQL 查询
  3. 规划/优化数据采集路径
  4. 执行优化查询/获取并返回数据

我想知道“解析传入查询”的真正含义是什么?“计划/优化数据采集路径”是什么意思?

0 投票
0 回答
67 浏览

solr - Apache SOLR:在逻辑 AND 上使用标准查询解析器提供额外结果

我在为我的标准查询解析器使用逻辑与时遇到了这个奇怪的问题。我正在查询中搜索术语“steve”和“austin”。我得到了 8 个匹配项,其中只有 2 个包含这两个术语,其余的只包含 steve。仅供参考,我使用 edismax 解析器尝试了相同的查询,它准确地返回了 2 个命中,正如预期的那样。

查询(标准解析器):http://localhost/select?q=all_name:(steve AND austin)&fl=*_name&wt=xml&hl=true&hl.fl=*&hl.simple.pre=<em>&hl.simple.post=</em>&debug=true&indent=true I am using phonetics on the terms, so terms in highlight do not exactly match steve. I am particularly surprise to see the last result, which lists nothing inside <em> tags. 我尝试突出显示,检查为什么选择了 8 个结果。这是突出显示的输出:

0 投票
0 回答
344 浏览

mysql - MYSQL:中间查询结果

是否可以在执行查询期间访问 mysql 生成的中间结果?为查询创建视图存储查询的结果,我需要存储每个查询的中间结果以进一步优化查询。我找不到任何出路。

还有一点我想提取。mysql 为其找到成本并选择最佳计划的候选计划。

我使用了关键字“EXPLAIN”,但它给出了 mysql 用来执行查询的执行计划(考虑到其最小成本),但要求是在选择最佳方案之前找到 mysql 考虑过的所有计划。

我知道这是一个非常广泛的问题,但我找不到任何支持我想做的任务的东西。

0 投票
1 回答
742 浏览

lucene - Lucene QueryParser:必须包含其他 MUST 子句中的一个或另一个

如何使用来自 Apache Lucene 的 QueryParser 来生成包含术语 A 或术语 B(或两者,但至少其中一个)的查询。编辑:此外,它还包含其他 MUST 子句,例如,它必须包含 C 并且必须包含 A 或 B。

那么这是正确的吗?

0 投票
1 回答
144 浏览

lucene - Lucene QueryParser 或 Query:获取所有有效要求的术语

有没有办法从 Query 实例中获取文档包含有效所需的所有术语?QueryParser 用于创建 Query 实例,因此查询的“内容”是用户驱动的。

例如,用户可以将此作为查询字符串

+A +B

然后我想得到 [A, B] (例如作为字符串数组)

或者

一个

然后只是 [A] 作为我需要的结果。

0 投票
1 回答
60 浏览

c# - Lucene 部分解析器(parcer with contains)

我得到了 Lucenes 解析器,它从表中返回了我的评论。它看起来像:

我收到了这样的文字评论:“sometext python sometext”。当我使用 _search("python", "Text") 时,它会返回我的表。但是当我使用 _search("pyth", "Text") 时,它什么也找不到。

我很明确地知道,问题在

但我不知道,我的查询中有问题,或者你应该在搜索器中转移一些参数......有人有什么建议吗?

亲切的问候。