我們正在嘗試使用Solr的拼寫檢查來執行「您的意思是?」類型建議。處理拼寫檢查建議
我們遇到的問題是我們用Solr的建議替換查詢中的原始術語。
例如:搜索「10ks」(我們正在創建活動網站)將返回「5ks」的建議。
但是,拼寫檢查似乎使用「ks」而不是「10ks」作爲該術語,因此當我們用「5ks」替換「ks」時,我們得到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」會得到「正在運行的事件」。
我能想到的唯一的事情就是做一些天真的事情,比如檢查原始查詢中的空格,然後在查詢中包含空格時替換整個事情。
整理後的查詢似乎有相同的問題,所以對於「倫敦10ks」它被重寫爲「倫敦105ks」我認爲這是一個令牌化問題。 –
我同意這與標記化有關。你能否請用fieldType定義來更新你的問題,這是你從中得到你的建議的字段。 –