Java 如何进行术语搜索并忽略大小写?
我正在使用JavaAPI创建搜索,并通过测试注意到我的搜索在搜索词的大小写上有所不同。我想一定有一个简单的解决方案,但我还没有在MarkLogicJavaAPI文档中找到它 我的查询看起来有点像这样:Java 如何进行术语搜索并忽略大小写?,java,marklogic,marklogic-8,Java,Marklogic,Marklogic 8,我正在使用JavaAPI创建搜索,并通过测试注意到我的搜索在搜索词的大小写上有所不同。我想一定有一个简单的解决方案,但我还没有在MarkLogicJavaAPI文档中找到它 我的查询看起来有点像这样: StructuredQueryBuilder queryBuilder = queryManager.newStructuredQueryBuilder(); StructuredQueryDefinition queryDef = queryBuilder.and( queryBuild
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()方法,但实际上没有太多。或者这与我需要翻转的DB设置有关,而不是与查询中的某些内容有关?我认为
queryBuilder.term()
对应于底层函数,其文档中有以下注释:
如果不存在“区分大小写”或“不区分大小写”,则使用$text来确定区分大小写。如果$text不包含大写字母,则指定“不区分大小写”。如果$text包含大写,则它指定“区分大小写”
看起来您无法将选项传递到
term()
,但传递给它的术语的大小写可能会影响查询的解释方式 好的,很酷。因此,我认为在传递搜索词之前,将其转换为较低的关注度可以实现我想要的结果。谢谢请注意,您可以在服务器上安装命名搜索选项(包括术语选项),并在调用newStructuredQueryBuilder(选项名称)时引用它