Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Улучшение поиска по спискам: Избавляемся от отрицательных ключевых слов в Delphi

Delphi , Компоненты и Классы , Списки

Иногда в процессе работы с данными нам необходимо отфильтровать определенные элементы, которые не соответствуют заданным критериям. В контексте SEO и разработки на Delphi, такая задача может возникнуть при работе со списками ключевых слов, когда нужно исключить из результатов поиска элементы, содержащие определенные отрицательные ключевые слова.

Пример задачи:

У нас есть два списка: один со списком ключевых слов и другой со списком отрицательных ключевых слов. Наша цель – отобрать из списка ключевых слов те элементы, которые не содержат отрицательные ключевые слова, и вывести их в третий список.

Пример списков:

Ключевые слова:

Cat
Catfish
Fish Sticks
Dog Food

Отрицательные ключевые слова:

Fish

Желаемые результаты:

Cat
Catfish
Dog Food

Решение проблемы:

Для решения этой задачи можно использовать функцию ExistWordInString, которая проверяет наличие слова в строке с учетом всего слова, а не его части. В примере кода ниже показана реализация такой функции:

function ExistWordInString(aString, aSearchString: string; aSearchOptions: TStringSearchOptions): Boolean;
var
  Size : Integer;
begin
  Size := Length(aString);
  Result := SearchBuf(PChar(aString), Size, 0, 0, aSearchString, aSearchOptions) <> nil;
end;

Данная функция может быть использована в обработчике нажатия кнопки, как показано ниже:

procedure TForm2.Button1Click(Sender: TObject);
var
  i, k: integer;
begin
  for k := 0 to ListBox2.Count - 1 do
    for i := 0 to ListBox1.Count - 1 do
    begin
      if not ExistWordInString(ListBox1.Items[i], ListBox2.Items[k], [soWholeWord, soDown]) then
        ListBox3.Items.Append(ListBox1.Items[i]);
    end;
end;

Уточнение алгоритма:

Для корректной работы с отрицательными ключевыми словами, необходимо добавить пробелы перед и после каждого слова в списках, чтобы функция ExistWordInString учитывала только полные слова. Это можно сделать, изменив функцию следующим образом:

function ExistWordInString(aString, aSearchString: string; aSearchOptions: TStringSearchOptions): Boolean;
begin
  if soWholeWord in aSearchOptions then
    Result := Pos(' '+UpperCase(aSearchString)+' ',' '+UpperCase(aString)+' ') > 0;
  else
    Result := Pos(UpperCase(aSearchString), UpperCase(aString)) > 0;
end;

Примечание:

Если вы используете Delphi 2009/2010, замените функцию Pos на AnsiPos.

Вывод:

Используя предложенные функции и алгоритм, вы сможете эффективно избавиться от отрицательных ключевых слов в вашем списке, оставляя только те элементы, которые соответствуют заданным критериям. Это позволит улучшить поиск по спискам и сделать вашу программу на Delphi более функциональной в контексте SEO и обработки текстовой информации.

Создано по материалам из источника по ссылке.

Улучшение поиска по спискам в Delphi через исключение элементов, содержащих отрицательные ключевые слова.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Списки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-09 07:51:01/0.0058739185333252/0