Christopher Johnson McCandless
の場合 {1}{2}
にマップされます :
2つのグループを形成するための可能な組み合わせは次のとおりです。
Christopher Johnson
およびMcCandless
Christopher
およびJohnson McCandless
cinema tomorrow at night
{3}{4}
にマッピングされます
2つのグループを形成するための可能な組み合わせは次のとおりです。
cinema
とtomorrow at night
cinema tomorrow
およびat night
cinema tomorrow
およびnight
PHP関数をget_possible_groups($string_of_words, $group_count)
に記述します グループの組み合わせの配列の配列を返します。
および次のようなSQLステートメント:
SELECT count(*), 'cinema' firstWordGroup, 'tomorrow at night' secondWordGroup
FROM possibleMatchTable
WHERE possible_match IN ('cinema', 'tomorrow at night')
UNION
SELECT count(*), 'cinema tomorrow', 'at night'
FROM possibleMatchTable
WHERE possible_match IN ('cinema tomorrow', 'at night')
UNION
SELECT count(*), 'cinema tomorrow at', 'night'
FROM possibleMatchTable
WHERE possible_match IN ('cinema tomorrow at', 'night');
考えられる出力の1つは次のとおりです。
+----------+--------------------+-------------------+
| count(*) | firstWordGroup | secondWordGroup |
+----------+--------------------+-------------------+
| 2 | cinema | tomorrow at night |
| 0 | cinema tomorrow | at night |
| 0 | cinema tomorrow at | night |
+----------+--------------------+-------------------+
カウント2(2つの単語グループ)のどちらかがあなたの答えです。
MODEL
の場合 テキストはfulltext
インデックス付きの列を指定すると、任意のランダムな文字列に対して、次のような最も関連性の高いモデルを取得できます。
SELECT * FROM model_strings
WHERE MATCH(model) AGAINST ('Damn you Spar, Kot will kill you.');
クエリは次のようなものを返す可能性があります:
+----------------------------------+
| model |
+----------------------------------+
| Damn you {1}, {2} will kill you. |
+----------------------------------+
Model
からプレースホルダーを使用してランダムな文字列の単語を抽出する :
<?php
$placeholder_pRegEx = '#\{\d+\}#';
$model = 'Damn you {1}, {2} will kill you. {3}{4}{5}';
$string = 'Damn you Spar, Will will kill you. I Love it man.';
$model_words = explode(' ', $model);
$string_words = explode(' ', $string);
$placeholder_words = array();
for ($idx =0, $jdx=0; $idx < count($string_words); $idx ++) {
if ($jdx < count($model_words)) {
if (strcmp($string_words[$idx], $model_words[$jdx])) {
$placeholder_words[] = $string_words[$idx];
//Move to next word in Model only if it's a placeholder
if (preg_match($placeholder_pRegEx, $model_words[$jdx]))
$jdx++;
} else
$jdx++; //they match so move to next word
} else
$placeholder_words[] = $string_words[$idx];
}
//Even status will have the count
$status = preg_match_all ($placeholder_pRegEx, $model, $placeholders);
$group_count = count($placeholders[0]);
var_dump(get_defined_vars());
?>
上記のコードは、次のような値を取得します:
'placeholder_words' => array (size=6)
0 => string 'Spar,' (length=5)
1 => string 'Will' (length=4)
2 => string 'I' (length=1)
3 => string 'Love' (length=4)
4 => string 'it' (length=2)
5 => string 'man.' (length=4)
'placeholders' => array (size=1)
0 =>
array (size=5)
0 => string '{1}' (length=3)
1 => string '{2}' (length=3)
2 => string '{3}' (length=3)
3 => string '{4}' (length=3)
4 => string '{5}' (length=3)
'group_count' => int 5
- そこから
get possible groupings
を呼び出すことができます - 次に、許可された一致の可能性をチェックするSQLクエリ
- 必要なグループの実際の単語。
ああ、それはいくつかの質問です、ええ!