我怎样才能进行术语搜索并忽略大小写?

How can I do a term search and ignore case?

我正在使用 Java API 来创建搜索,并且通过测试发现我的搜索因搜索词的大小写而异。我想一定有一个简单的解决方案,但我还没有在 MarkLogic Java API 文档中找到它。

我的查询看起来有点像这样:

StructuredQueryBuilder queryBuilder = queryManager.newStructuredQueryBuilder();
StructuredQueryDefinition queryDef = queryBuilder.and(
    queryBuilder.term(term),
    queryBuilder.value(
        queryBuilder.elementAttribute(
            queryBuilder.element(new QName(my-namespace,"document") ),
            queryBuilder.attribute("locale")
        ),
        language)
);

我试着弄乱了 term() 方法,但它并没有太多用处。或者这是否与我需要翻转的数据库设置有关,而不是与查询中的内容有关?

我认为 queryBuilder.term() 对应于底层 cts:word-query 函数,其文档中有此注释:

If neither "case-sensitive" nor "case-insensitive" is present, $text is used to determine case sensitivity. If $text contains no uppercase, it specifies "case-insensitive". If $text contains uppercase, it specifies "case-sensitive".

您似乎无法将选项传递给 term(),但您传递的术语的大小写可能会影响查询的解释方式。