Найти похожие слова между 2 массивами Левенштейна

Я пытаюсь найти 2 одинаковых слова в списке, если у вас есть 2 массива слов, как это:

$words = array("peace", "loving", "air", "earth");

$category = array("lover", "something", "example", "peace"); // (actually I have more than 1000 categories)

самое похожее (или точное) слово будет «peace«, так что он может напечатать слово массива $category и исключить остальных из них.

Пример 1:

введите описание изображения здесь

Но когда я пишу больше текста (кавычек), иногда он не соответствует ни одной категории и просто отображается пустым, даже если есть какая-то категория с похожим текстом и показывает это:

Пример 2:

введите описание изображения здесь

Это мой код, который сталкивается с «for«Цикл, чтобы получить каждую цитату и отделить каждую из них с preg_split():

<?php for($i=0;$i<count($text);$i++) { ?>
<!-- Quote -->
<td><textarea name="txtquote[<?php echo $i; ?>]" id="txtquote[<?php echo $i; ?>]" cols="45" rows="5"><?php echo trim($text[$i]); ?></textarea></td>

<!-- Category -->
<?php
$rows = mysql_num_rows($RecordsetCategory);
if($rows > 0) { mysql_data_seek($RecordsetCategory, 0);
while ($row_RecordsetCategory = mysql_fetch_assoc($RecordsetCategory)) {

$input = $row_RecordsetCategory['category'];
$words  = str_word_count($text[$i],1);
$shortest = -1;

foreach ($words as $word) {
$lev = levenshtein($input, $word);
if ($lev == 0) {
$closest = $word;
$shortest = 0;
break;
}
if ($lev <= $shortest || $shortest < 0) {
$closest  = $word;
$shortest = $lev;
}
}

if ($shortest == 0) { ?>
<option value="<?php echo $row_RecordsetCategory['id']?>"><?php echo $closest;?></option>
<?php } } }

} // end
?>

Что я могу сделать, чтобы избежать этого? Найдите такое же слово в категории, когда я пишу больше текста, а белый комбобокс не отображается.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]