2011-06-20 64 views
3

我試圖建立一個搜索,讓我做到這一點我怎樣才能實現這個搜索

要搜索的字符串

This is a text 

用戶輸入

this_is_a_text 
this a text 
tihs a txt <----notes that the user made a wrong input 

但總是給我最好的巧合,那將由this is a text

我想知道是否可以使用containsfreetext。我也一直在考慮在c#中的一個方法中按字符匹配來加載所有記錄,因爲這裏只有300個,並且構成了等於的百分比。但這只是有人可以幫助我的想法。

UPDATE

我試圖與功能的同音,但它並不能幫助我了...

+0

你真的想在搜索中將'input'換成'text'嗎? –

+0

@Abe Miessler對不起,我的錯誤,我已經修改問題 – Jorge

+0

這是很不清楚,你如何搜索...「搜索字符串」只需要包含「使用輸入」?另外,你指的是什麼記錄,以及「等於百分比」?你只是想在SQL數據庫中搜索條目嗎?請澄清。 –

回答

2

如果您希望對數據進行一次性調整,您可能最好加載兩個列表以匹配C#,然後使用edit distance算法(如Levenshtein Distance)來遍歷最佳匹配。可能非常耗時,但就像我說的 - 如果你只需要做一次...

你可以在SQLServer中實現這個算法作爲函數(谷歌將會找到你很多人已經爲你做了這個...)。此外,諸如這些算法可能會給人們提供不必要的或意想不到的匹配,因爲人類匹配器會選擇另一種替代方案。

小心!

0

你可以使用一個替代方法。

var stringToSearch = userInputText.Replace('_','');

+1

嗨,感謝提問筆記用戶放在可能會改變我改變我的問題,使其更清晰 – Jorge

0

嘗試Soundex

+0

嗨,並感謝詢問我嘗試過,但對於多個詞它不是最好的工具 – Jorge