【问题标题】:How can I do a term search and ignore case?如何进行术语搜索并忽略大小写?
【发布时间】:2017-03-24 21:03:48
【问题描述】:

我正在使用 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() 方法,但它并没有太多的作用。还是这与我需要翻转的数据库设置有关,而不是与查询有关?

【问题讨论】:

    标签: java marklogic marklogic-8


    【解决方案1】:

    我相信queryBuilder.term() 对应于底层的cts:word-query 函数,它的文档中有这个注释:

    如果“区分大小写”和“不区分大小写”都不存在,则使用 $text 来确定是否区分大小写。如果 $text 不包含大写,则它指定“不区分大小写”。如果 $text 包含大写,它指定“区分大小写”。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多