3

我们正在将基于 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. 最佳做法是什么?

提前致谢!

4

0 回答 0