Jump to content

need help checking text similarity in php


oracle259

Recommended Posts

[quote author=oracle259 link=topic=110171.msg444880#msg444880 date=1159736698]
Yup but it seems to do nothing more than return the strlen($word1) - strlen($word2). Which doesnt do much
[/quote]Not quite. The function returns the Levenshtein-Distance between two strings. The Levenshtein distance is defined as the minimal number of characters you have to replace, insert or delete to transform string 1 into string 2.

The example from the manual is quite useful as a starting point:
[code]<?php
// input misspelled word
$input = 'carrrot';

// array of words to check against
$words  = array('apple','pineapple','banana','orange',
              'radish','carrot','pea','bean','potato');

// no shortest distance found, yet
$shortest = -1;

// loop through words to find the closest
foreach ($words as $word) {

  // calculate the distance between the input word,
  // and the current word
  $lev = levenshtein($input, $word);

  // check for an exact match
  if ($lev == 0) {

      // closest word is this one (exact match)
      $closest = $word;
      $shortest = 0;

      // break out of the loop; we've found an exact match
      break;
  }

  // if this distance is less than the next found shortest
  // distance, OR if a next shortest word has not yet been found
  if ($lev <= $shortest || $shortest < 0) {
      // set the closest match, and shortest distance
      $closest  = $word;
      $shortest = $lev;
  }
}

echo "Input word: $input\n";
if ($shortest == 0) {
  echo "Exact match found: $closest\n";
} else {
  echo "Did you mean: $closest?\n";
}

?>[/code]
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.