我们正在尝试使用 Solr 的拼写检查来执行“您的意思是?” 类型建议。
我们遇到的问题是我们正在用 Solr 的建议替换查询中的原始术语。
例如:搜索“10ks”(我们正在创建一个活动网站)将返回“5ks”的建议。
但是,拼写检查似乎使用“ks”而不是“10ks”作为术语,因此当我们将“ks”替换为“5ks”时,我们得到 105ks。这会导致一个无限的“你的意思是”循环,因为 Solr 在拼写检查建议中总是使用“ks”而不是“10ks”。
这是我们用来替换原始查询中的建议的代码。
/// <summary>
/// Method that takes the first suggestion for all the spelling and applys them to the keyword
/// </summary>
private string GetSuggestedQuery(string keyword, List<SpellCheck> suggestions)
{
if (suggestions != null)
{
for (var i = 0; i < suggestions.Count; i++)
{
keyword = keyword.Replace(suggestions.ElementAt(i).Query,
suggestions.ElementAt(i).Suggestions.First());
}
return keyword;
}
return null;
}
这对于两个单词查询非常有用,例如“runnig events”会得到“running events”。
我唯一能想到的就是做一些天真的事情,比如检查原始查询中的空格,然后如果查询包含空格则替换整个内容。