我有如下的搜索选项
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection prefix=""/>
</constraint>
<constraint name="concept_name">
<word>
<field name="concept_name" collation="http://marklogic.com/collation/en/S1"/>
</word>
</constraint>
<term>
<term-option>case-insensitive</term-option>
<term-option>punctuation-insensitive</term-option>
<term-option>whitespace-insensitive</term-option>
<term-option>wildcarded</term-option>
</term>
<return-facets>false</return-facets>
<return-values>false</return-values>
<return-constraints>false</return-constraints>
<return-frequencies>false</return-frequencies>
<return-qtext>false</return-qtext>
<search-option>format-json</search-option>
<search-option>score-simple</search-option>
</options>并执行搜索search:search($q, $options, $start, $page-length)
但搜索的是,而不是 case-insensitive。如何在此场景中指定field的选项。我希望它是case-insensitive
当我做cts:field-value-match("concept_name", $q ("case-insensitive", "diacritic-insensitive"))时,我确实得到了正确的结果,所以我如何指定使用上面的搜索选项来做同样的事情。
发布于 2017-03-30 16:27:31
我认为您希望您的<term-option>case-insensitive</term-option>在<constraint...><word>元素中。这样,该选项就会用该约束影响您的搜索。但是,您还没有共享您的$q (serach string),所以我不确定您正在使用什么搜索进行测试。
您应该注意到,cts:field-word-match将在字段单词词典中搜索,因此比匹配字段范围索引中的值的cts:field-value-match更适合您正在进行的搜索:搜索。
无论如何,我不确定您的数据库或字段中有哪些选项,因此不清楚为什么要努力获得不区分大小写的匹配。当我尝试cts:field-word-match("concept_name", "alexa488", ("collation=http://marklogic.com/collation/en/S1"))时,我得到一个匹配,即使我没有添加case-insensitive选项。类似地,当我尝试搜索:没有<term-option>case-insensitive</term-option>的搜索时,我得到一个匹配。
https://stackoverflow.com/questions/43120583
复制相似问题