MarkLogic - 如何切换建议的语言

MarkLogic - How to switch Language of Suggest

我想结合 Java 客户端 API 使用 MarkLogic 数据库的建议功能。

这样做的问题是,要进行建议调用,我需要一个字段或用作建议源的东西。下一步是创建引用此建议源的查询选项。最后一步是调用:

SuggestionDefinition def = marklogicClient.newQueryManager().newSuggestionDefinition();
def.setLimit(10);
def.setOptionsName("my-query-options");
def.setStringCriteria("Test");
//setup lang?

问题是:如何切换语言? 如果我的前端可以在德语和英语之间切换,那么我必须切换 search/suggest 语言。为此,我必须切换排序规则,但如何切换?

上传后查询选项是静态的,包含如下内容:

<default-suggestion-source>
    <word collation="http://marklogic.com/collation/de">
        <field name="my-suggest" />
    </word>
</default-suggestion-source>

在此先感谢您的帮助!

此致,

Zipunrar

也许您正在寻找 java API 文档中定义的动态查询选项的用法:

https://docs.marklogic.com/guide/java/searches#id_76144

此外,您还可以注册多个查询选项文件,每种语言使用一个。

解决方案来自两个可能的(和实用的)想法:

要么按照建议为每种语言创建一个以上的查询选项文件(并为每种语言创建额外的索引),要么忽略该问题!

如果建议背后的字段(来源)指向标有不同 xml:lang 属性的元素,那么使用 say "books" 的建议调用将 return 只有英文建议与德语 "Bücher" 通话将 return 仅提供德语建议。

唯一的例外是英文标记元素中包含德文文本。这可能会导致误报。

其他想法:通过 "books" 等建议进行搜索并将搜索语言设置为德语将 return 没有任何结果。

结论:在特定语言下搜索是一个复杂的话题。这实际上取决于用户想要搜索的方式以及应用程序的工作方式。

P.S: 我使用了第二种解决方案,暂时忽略了这个问题。