Marklogic字段搜索选项

时间:2017-03-30 14:19:58

标签: marklogic marklogic-8

我有以下搜索选项

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")),我确实得到了正确的结果,因此如何使用上述搜索选项指定相同的结果。

1 个答案:

答案 0 :(得分:1)

我认为您希望Execption元素位于string a = "saffsa1ad12314"; string finalString = string.Empty; char[] chars = a.ToCharArray(); for (int i = chars.Length -1; i >= 0; i--) { if (char.IsDigit(chars[i])) { finalString += chars[i]; } else { break; //so you dont get a number after a letter //could put your mbox here } } //Now you just have to reverse the string char[] revMe = finalString.ToCharArray(); Array.Reverse(revMe); finalString = string.Empty; foreach (char x in revMe) { finalString += x; } Console.WriteLine(finalString); //outputs: 12314 元素内。这样,该选项会影响您使用该约束的搜索。但是,您尚未共享<term-option>case-insensitive</term-option>(搜索字符串),因此我不确定您正在测试哪些搜索。

您应该注意<constraint...><word>将搜索字词lexicon,因此更适合您搜索的内容:搜索比$q匹配字段范围内的值索引。

无论如何,我不确定您的数据库或字段的选项是什么,因此不清楚为什么您要努力获得不区分大小写的匹配。当我尝试cts:field-word-match时,我得到了一个匹配,即使我没有添加cts:field-value-match选项。同样,当我尝试搜索时:搜索没有cts:field-word-match("concept_name", "alexa488", ("collation=http://marklogic.com/collation/en/S1"))我得到一个匹配。