使用Umbraco v6,检查搜索(不是完整的 Lucene 查询)。这是一个拉丁美洲/南美网站。我问过我的同事,他们如何在搜索/URL 中输入标题(字母上的重音符号),他们都说没有,他们只是使用“常规”字符(AZ、az)。
我知道如何在传递给Examine时从字符串中去除特殊字符,但我需要相反的方式,如在 Examine 中删除属性中的特殊字符以匹配查询。我有许多名称中带有标题的“节点”(这是我正在搜索的属性之一)。
我研究过的帖子:
- http://shazwazza.com/categories/Examine?p=2
- 忽略检查中的特殊字符
- https://groups.google.com/forum/#!topic/umbraco-dev/W6cWyPOc43Y
我试过写 luence 查询(或者我认为),但我没有得到任何点击。
// q is my query from QueryString
var searcher = ExamineManager.Instance.SearchProviderCollection["CustomSearchSearcher"];
//var query = searcher.CreateSearchCriteria().Field("nodeName", q).Or().Field("description", q).Compile();
//var searchResults = searcher.Search(query).OrderByDescending(x => x.Score).TakeWhile(x => x.Score > 0.05f);
var searchResults = searcher.Search(Global.RemoveSpecialCharacters(q), true).OrderByDescending(x => x.Score).TakeWhile(x => x.Score > 0.05f);
全球班
public static string RemoveSpecialCharacters(string str)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
if ((str[i] >= '0' && str[i] <= '9')
|| (str[i] >= 'A' && str[i] <= 'z' || (str[i] == '.' || str[i] == '_'))
|| str[i] == 'á' || str[i] == 'é' || str[i] == 'í' || str[i] == 'ñ' || str[i] == 'ó' || str[i] == 'ú')
{
sb.Append(str[i]);
}
}
return sb.ToString();
}
如上所述,我需要从 Lucene 中删除特殊字符(标题),而不是传入的查询。
来自:https ://our.umbraco.org/documentation/reference/searching/examine/overview-explanation
我也读过“分析器”,但我以前从未与他们合作过,也不知道要获取/安装/添加到 VS 等。这是更好的方法吗?