Я считаю, что диакритические знаки - не единственная проблема.
Я бы сделал замену символов, заменив их пустыми строками, я также нормализовал бы текст 'أ' 'إ' 'آ', все они были преобразованы в 'ا', а также сделал бы то же самое для ى ئ ي ؤ و ة ه ...
Для поиска я бы также использовал легкий стеммер, такой как "ходжа стеммер" (источник Java здесь )
Более продвинутый способ сделать это, например, TREC :
- Удалить пунктуацию
- Удалить диакритические знаки (в основном слабые гласные). Большинство корпусов не содержат слабых гласных.
- Некоторые из словарных статей содержали слабые гласные. Это сделало все согласованным.
- Удалить не буквы
- Заменить начальную букву إ или bare на чистую алифу .ا
- Заменить آ на ا
- Заменить последовательность ىء на ئ
- Заменить окончательный ى на ي
- Заменить окончательную часть на ه
- Префикс 6 полос: определенные статьи (فال آال ، بال ، وال ، ال ،) и و
(и) с начала нормализованных слов
- Снять 10 суффиксов с концов слов. ات ان ، ها ، ي ة ، ه ، ية ، يه ، ين ، ون
Я бы проиндексировал текст по этому измененному тексту (для заметок я бы сохранил индекс слова в исходном тексте) и сделал бы то же самое для поискового запроса.
Я бы также искал в Memo1.Text, а не в строках одну за другой, поиск мог бы выполняться по нескольким словам, которые могут находиться в конце строки и переноситься на следующую строку.