在Umbraco,我使用Examine在网站上搜索,但内容是法语。一切正常,除非我搜索“Français”时,它与“Francais”的结果不一样。有没有办法忽略那些法国人?我试图为Leucene / Examine找到FrenchAnalyser,但没有找到任何东西。我使用模糊,因此即使单词不相同也会返回结果。
以下是我的搜索代码:
public static ISearchResults Search(string searchTerm)
{
var provider = ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"];
var criteria = provider.CreateSearchCriteria(BooleanOperation.Or);
var crawl = criteria.GroupedOr(BoostedSearchableFields, searchTerm.Boost(15))
.Or().GroupedOr(BoostedSearchableFields, searchTerm.Fuzzy(Fuzziness))
.Or().GroupedOr(SearchableFields, searchTerm.Fuzzy(Fuzziness))
.Not().Field("umbracoNavHide", "1");
return provider.Search(crawl.Compile());
}
答案 0 :(得分:1)
我们最终使用基于SnowballAnalyzer
public class CustomAnalyzer : SnowballAnalyzer
{
public CustomAnalyzer() : base("French") { }
public override TokenStream TokenStream(string fieldName, TextReader reader)
{
TokenStream result = base.TokenStream(fieldName, reader);
result = new ISOLatin1AccentFilter(result);
return result;
}
}
答案 1 :(得分:0)
尝试使用如下所示的Regex:
var strInput ="Français";
var strToReplace = string.Empty;
var sNewString = Regex.Replace(strInput, "[^A-Za-z0-9]", strToReplace);
我使用这种模式“[^ A-Za-z0-9]”用空格替换所有非字母数字字符串。
希望它有所帮助。