Destacando palabras clave en un cuadro de texto enriquecido en WPF

Estoy creando un programa que necesita revisar un párrafo de texto y encontrar cuántas veces aparecen ciertas palabras clave / palabras clave. También tiene que resaltar cada una de estas palabras clave en el texto.

He logrado hacer que interactúe y ahora puede rastrear cuántas veces aparece la palabra, pero estoy realmente atrapado en cómo resaltar dónde aparecen las palabras clave. Publicaré mi código a continuación, cualquier ayuda es muy apreciada sobre cómo buscar y resaltar texto dentro de un cuadro de texto enriquecido. Como esto está en WPF, el richtextbox.find () obvio no está disponible para su uso.

class TextAnalyser
{
    public int FindNumberOfOccurances(List<string> keywords, string email)
    {
        int occurances = 0;
        foreach (string keyword in keywords)
        {
            occurances += email.ToUpper().Split(new string[] { keyword.ToUpper() }, StringSplitOptions.None).Count() - 1; 
        }
        return occurances;
    }

    public void TurnTextRed(List<string> keywords, string email, RichTextBox TextBox)
    {
        foreach(string keyword in keywords)
        {
        }
    }

    public List<string> ConvertTextToList(string text)
    {
        char[] splitChars = {};
        string[] ArrayText = text.Split( splitChars, StringSplitOptions.RemoveEmptyEntries);
        return ArrayText.ToList<string>();
    }

    public string GetStringFromTextBox(RichTextBox TextBox)
    {
        var textRange = new TextRange(
            TextBox.Document.ContentStart,
            TextBox.Document.ContentEnd
        );
        return textRange.Text;
    }
}

Y aquí está mi ventana principal

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void AnalyseButton_Click(object sender, RoutedEventArgs e)
    {
        var textTool = new TextAnalyser();
        var keyWords = textTool.ConvertTextToList(textTool.GetStringFromTextBox(WordTextBox).Trim());
        var email = textTool.GetStringFromTextBox(EmailTextBox).Trim();
        int usesOfWord = textTool.FindNumberOfOccurances(keyWords, email);
        Occurances.Text = usesOfWord.ToString();
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta