Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP низови разлики и динамични ограничения

когато Christopher Johnson McCandless е съпоставен с {1}{2} :

възможна комбинация за образуване на две групи е:

  • Christopher Johnson и McCandless
  • Christopher и Johnson McCandless

когато cinema tomorrow at night е съпоставен с {3}{4}

възможна комбинация за образуване на две групи е:

  • cinema и tomorrow at night
  • cinema tomorrow и at night
  • cinema tomorrow at и 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');

един възможен изход може да бъде:

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

който има брой 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 заявка за проверка на разрешените възможни съвпадения
  • действителните думи в задължителните групи.

Уви, това е някакъв въпрос, а!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво означава pooling=false в низ за връзка на MySQL?

  2. Задаване на полето за автоматично вмъкване на времеви печат при АКТУАЛИЗИРАНЕ?

  3. Защо не мога да използвам променлива като име на таблица в съхранена процедура?

  4. Защо идентификаторът на auto_increment не се увеличава един по един, как да го настроя?

  5. Как да съхранявам масив в mysql?