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