Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Różnice w ciągach PHP i ograniczenia dynamiczne

kiedy Christopher Johnson McCandless jest mapowany na {1}{2} :

możliwa kombinacja do utworzenia dwóch grup to:

  • Christopher Johnson i McCandless
  • Christopher i Johnson McCandless

kiedy cinema tomorrow at night jest mapowany na {3}{4}

możliwa kombinacja do utworzenia dwóch grup to:

  • cinema i tomorrow at night
  • cinema tomorrow i at night
  • cinema tomorrow at i night

Napisz funkcję PHP do get_possible_groups($string_of_words, $group_count) zwraca tablicę tablicy kombinacji grup.

i instrukcja SQL, taka jak:

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');

jednym możliwym wyjściem może być:

+----------+--------------------+-------------------+
| count(*) | firstWordGroup     | secondWordGroup   |
+----------+--------------------+-------------------+
|        2 | cinema             | tomorrow at night |
|        0 | cinema tomorrow    | at night          |
|        0 | cinema tomorrow at | night             |
+----------+--------------------+-------------------+

Twoja odpowiedź jest taka, która ma 2 (dwie grupy słów).

Jeśli MODEL tekst jest fulltext zaindeksowana kolumna, a następnie dla dowolnego losowego ciągu można uzyskać najbardziej odpowiedni model, taki jak:

SELECT * FROM model_strings 
WHERE MATCH(model) AGAINST ('Damn you Spar, Kot will kill you.');

zapytanie może zwrócić ci coś takiego:

+----------------------------------+
| model                            |
+----------------------------------+
| Damn you {1}, {2} will kill you. |
+----------------------------------+

Wyodrębnianie słów do losowego ciągu znaków za pomocą symboli zastępczych z 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());
?>

Powyższy kod dostanie wartości takie jak:

'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
  • stamtąd możesz zadzwonić get possible groupings
  • następnie zapytanie SQL w celu sprawdzenia dozwolonych możliwych dopasowań
  • rzeczywiste słowa w wymaganych grupach.

Niestety, to jakieś pytanie!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak importować / przywracać tabele MySql za pomocą PHP

  2. mysql czas wykonania powrotu z wiersza poleceń?

  3. Poruszanie się po MySQL Błąd nie można ponownie otworzyć tabeli

  4. Mysql:Wybierz wszystkie dane między dwiema datami

  5. Uzyskaj wynik zapytania SQL bez formatu tabeli