2011-06-14 62 views
0

我有一個案例,我有一個關鍵字數組。我想在給定的字符串中找到它們的匹配,並在每個字符前後返回x個單詞。關鍵字近似匹配 - 選項?

我可以編寫循環引擎,遍歷每個循環的引用,返回給定的索引,並根據這些循環執行串聯的子串,但這看起來有點冗長。

我聽說過Lucene,但不確定是否實施整個框架來做到這一點是值得的。另外,如果可能的話,我如何用Lucene完成?

謝謝。

+0

我做了類似的事情,並試圖使用Lucene.net。 Lucene並不是以一種有效的方式來構建你想要的,然而,它確實有一些很好的標記器可以使用。 – 2011-06-14 19:19:11

回答

2

也許正則表達式,將有助於... 這建立相匹配的字符串列表(最多前3個字)的關鍵字(後可達3個字)

編輯:我錯過了兩個0和一些@s 。再試一次。

private static void GetMatches (string s) 
{ 
    string[] keywords = {"if", "while", "do"}; 
    int x = 3; // words before and after 
    string ex = 
     @"(\w+\W+){0," + x + @"}\b(" + string.Join("|", keywords) + @")\b\W+(\w+\W+){0," + x + @"}"; 
    Regex regex = new Regex(ex); 
    List<string> matches = new List<string>(); 
    foreach (Match match in regex.Matches (s)) 
    { 
     matches.Add(match.Value); 
    } 
} 
+0

有趣。它似乎只匹配「while」,只有返回「while」......沒有周圍的單詞。如果它有效,我可以在我目前正在嘗試的方面有用。我現在得到了給定字符串中所有關鍵字的所有索引的有序數組。 – ElHaix 2011-06-14 20:11:57

+0

如果你喜歡再試一次......我錯過了幾個人物。 – 2011-06-14 20:25:48

+0

啊,真可愛。比我採取的方法更簡單。謝謝! – ElHaix 2011-06-14 21:07:19