ある種の「ファジー」マッチングを行うには、ユーザーが入力できる文字列からサブフレーズのすべてのバリエーションを抽出する必要があります。
私が試したいくつかの例は、すべての仕事をしているようには見えません-それらはループして、並んでいるが全体に分散されていないサブフレーズのみを取得しているようです-例:
元の入力 - 「ヘビー デューティー ケーブル リール」 - 2 単語のサブ フレーズを取得すると、次のようになります。
頑丈な
デューティケーブル
ケーブルリール
しかし、私も欲しい:
重いケーブル
重いリール
デューティリール
そのため、サブフレーズを作成する際に単語を「見落とす」ことになります。理想的には、4 単語の元の入力に対して 3 & 2 単語のサブフレーズを返し、5 単語の入力に対して 4、3 & 2 などを返す必要があります。
For i As Integer = lst.Count To 1 Step -1
For j As Integer = 1 To i
Dim sb As New StringBuilder
sb.Append("( ")
For k As Integer = 0 To (lst.Count - i)
sb.Append(lst(j + k - 1) & ":" & j & ":" & k & ":" & i & " ")
Next
sb.Append(")")
rlst.Add(sb.ToString())
Next
Next