2013-08-05 97 views
0

我們正在嘗試使用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」會得到「正在運行的事件」。

我能想到的唯一的事情就是做一些天真的事情,比如檢查原始查詢中的空格,然後在查詢中包含空格時替換整個事情。

回答

1

看看spellcheck.collat​​e設置。它會按照您建議的方式返回重寫的查詢。

https://wiki.apache.org/solr/SpellCheckComponent#spellcheck.collate

+0

整理後的查詢似乎有相同的問題,所以對於「倫敦10ks」它被重寫爲「倫敦105ks」我認爲這是一個令牌化問題。 –

+0

我同意這與標記化有關。你能否請用fieldType定義來更新你的問題,這是你從中得到你的建議的字段。 –