我怎样才能进行术语搜索并忽略大小写?
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()
,但您传递的术语的大小写可能会影响查询的解释方式。
我正在使用 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()
,但您传递的术语的大小写可能会影响查询的解释方式。