Посмотрите здесь - запятая обозначает несколько выражений / операторов. Например, в вашем коде вы можете использовать такую строку:
var a=0, b=0, c=0;
Это объявило бы все три переменные без записи:
var a=0;
var b=0;
var c=0;
Надеюсь, что это поможет.
Вы могли бы хотеть проверить расстояние Левенштейна алгоритм как начальная точка. Это оценит "расстояние" между двумя словами.
Это ТАК распараллеливает при реализации стиля Google, "Вы имеете в виду...?" система может обеспечить некоторые идеи также.
Я не знаю, какой язык Вы кодируете в, но если это - PHP, необходимо рассмотреть следующие алгоритмы:
levenshtein () : Возвращает минимальное количество символов, которые необходимо заменить, вставить или удалить для преобразования одной строки в другого.
soundex () : Возвращает soundex ключ с четырьмя символами слова, которое должно совпасть с ключом для любого подобно звучащего слова.
метафон () : Подобный soundex и возможно более эффективный для Вас. Это более точно, чем soundex (), поскольку это знает основные правила английского произношения. Сгенерированные ключи метафона имеют переменную длину.
similar_text () : Подобный levenshtein (), но это может возвратить процентное значение вместо этого.
Я имел некоторый успех с расстояние Левенштейна алгоритм, существует также Soundex.
, В каком языке Вы реализуете это? мы можем указывать на определенные примеры
Я на самом деле реализовал аналогичную систему. Я использовал расстояние Левенштейна (в качестве других плакатов, уже предложенных) с некоторыми модификациями. Проблема с неизмененным расстоянием редактирования (относился к целым строкам) состоит в том, что это чувствительно к переупорядочению слова, таким образом, "Acme Digital Incorporated World Company" будет соответствовать плохо против "Высшей точки Digital Incorporated World Company", и такие переупорядочения были довольно распространены в моих данных.
я изменил его так, чтобы, если расстояние редактирования целых строк было слишком большим, алгоритм отступил к соответствующим словам друг против друга для нахождения хорошего соответствия от слова к слову (квадратичная стоимость, но было сокращение, если было слишком много слов, таким образом, это работало хорошо).
Я реализую его в PHP, и я теперь пишу часть кода, который разобьет 2 строки в словах и сравнит каждое из слов от первой строки со словами второй строки с помощью levenshtein и примет любление возможных значений. Иллинойс отправляет его, когда я сделан.
Большое спасибо.
Обновление: вот то, что я придумал:
function myLevenshtein( $str1, $str2 )
{
// prepare the words
$words1 = explode( " ", preg_replace( "/\s+/", " ", trim($str1) ) );
$words2 = explode( " ", preg_replace( "/\s+/", " ", trim($str2) ) );
$found = array(); // array that keeps the best matched words so we don't check them again
$score = 0; // total score
// In my case, strings that have different amount of words can be good matches too
// For example, Acme Company and International Acme Company Ltd. are the same thing
// I will just add the wordcount differencre to the total score, and weigh it more later if needed
$wordDiff = count( $words1 ) - count( $words2 );
foreach( $words1 as $word1 )
{
$minlevWord = "";
$minlev = 1000;
$return = 0;
foreach( $words2 as $word2 )
{
$return = 1;
if( in_array( $word2, $found ) )
continue;
$lev = levenshtein( $word1, $word2 );
if( $lev < $minlev )
{
$minlev = $lev;
$minlevWord = $word2;
}
}
if( !$return )
break;
$score += $minlev;
array_push( $found, $minlevWord );
}
return $score + $wordDiff;
}
Я взял SoundEx, Levenshtein, подобие PHP и двойной метафон и упаковал их в C# в одном наборе дополнительных методов на Строке.
Существует несколько алгоритмов, чтобы сделать просто, что, и большинство баз данных даже включают ту по умолчанию. Это - на самом деле довольно общее беспокойство.
, Если его примерно английские слова, SQL Server, например, включает SOUNDEX, который может использоваться для сравнения на получающемся звуке слова.
http://msdn.microsoft.com/en-us/library/aa259235%28SQL.80%29.aspx