我不确定您客户的环境发生了什么,但是,下面的解决方案可能会派上用场解决这个问题以及可能源于搜索具有特殊字符的单词的其他问题。
以下方法将从文本字符串中删除任何变音符号。例如,如果您通过它Zürich
,它将返回Zurich
. 诀窍是在索引之前通过此方法传递您的内容。在 Sitecore 6 中,这可以在 DatabaseCrawler 的自定义实现中完成。在 Sitecore 7 中,计算域可能是一个不错的选择。
public static string NormalizeDiacritics(this string input)
{
if (String.IsNullOrEmpty(input)) return String.Empty;
var sb = new StringBuilder();
foreach (var c in input.Normalize(NormalizationForm.FormD))
{
if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
sb.Append(c);
}
return sb.ToString();
}
下一步是也通过相同的方法传递访问者的搜索查询。这样,您可以放心,搜索其中一个Zürich
或Zurich
将始终返回结果。这特别方便,因为许多访问者在在线搜索时不会花时间输入特殊字符(至少对于说英语的访问者来说是这样)。