使用使用Umbraco v6,檢查搜索(並非完整的Lucene查詢)。這是一個拉丁/南美網站。我問過我的大學他們是如何輸入search/URL的標題,並且他們都表示他們沒有,他們只是使用「常規」字符(A-Z,a-z)。忽略檢查搜索中的特殊字符(tittles)
我知道如何去掉特殊字符OUT的字符串傳遞給Examine時,但我需要另一種方式,例如檢查從屬性中刪除特殊字符以匹配查詢。我有很多名稱中含有標題的「節點」(這是我正在搜索的屬性之一)。
帖子,我已經研究:
- http://shazwazza.com/categories/Examine?p=2
- Ignore special characters in Examine
- 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等等。是不是更好的方法來解決這個問題?
有人嗎?我一直在研究語言分析器,但我不知道如何將其實施到我的項目 –