首页 > 解决方案 > Solr 中的 Edismax 查询对不同的字段使用不同的字符串

问题描述

我可能需要一些关于如何使用 Solr 处理特定跨语言搜索的建议。我有 3 种语言(英语、德语、法语)的文件。为简单起见,我们假设它只是两种语言(英语和德语)。这些文档是标准化的,因为它们包含相同的部分(text_part1 和 text_part2),只是它们编写的语言不同。文件的语言是已知的。在我的索引模式中,我为每种语言使用一个具有不同字段的核心。

对于德语文档,索引将如下所示:

对于英文文档,情况正好相反。

我想要实现的目标:用英语输入查询的用户应该同时收到与其搜索相关的英语和德语文档。进一步的条件是:

到目前为止,我的一般方法是通过将用户查询发送到翻译 API 来获得德语翻译。然后我想使用 edismax 查询,因为它似乎满足了我的所有要求。问题是我无法设法在德语字段中搜索德语查询,而仅在英语字段中搜索英语查询。Solr edismax文档声明它支持完整的 Lucene 查询解析器语法,但我找不到用不同输入处理不同字段的方法。我试过了:

q=text_part1_en: (A sentence in English) text_part1_de: (Ein Satz auf Deutsch) text_part2_en: (A sentence in English) text_part2_de: (Ein Satz auf Deutsch)
qf=text_part1_en text_part2_en text_part1_de text_part2_de

这个语法应该与 MatsLindh 在这个线程中写的一致。我尝试了编写这个 q 的不同版本,但无论我做什么 Solr 总是在 qf 给出的所有四个字段中搜索完整的 q 字符串,这完全弄乱了结果。我只是在查询语法中犯了错误,或者甚至可以使用 edismax 来做我想做的事情吗?

我看到的唯一选择是使用两个单独的 edismax 搜索。一份英文,一份德文。但是我不知道如何组合结果。据我了解,两次不同搜索的分数没有可比性,对吗?

我遇到的关于多语言搜索的来源似乎都与查询的语言未知并需要检测的情况有关,但之后只有查询语言的文档与结果相关。不过,由于缺乏理解,我完全有可能不知道到底要寻找什么。我对使用 Solr 很陌生。任何帮助深表感谢。我正在使用 Solr 8.2.0。

标签: solredismaxcross-language

解决方案


推荐阅读