@Override
	public void searchAsync(final String completeString)
	{
		WordProcessing wordProcessing = new WordProcessing();
		String[] words = wordProcessing.splitToWords(completeString);

		// i wird immer um die satzlaenge + sprungweie erhoeht
		for (int i = 0; i < words.length - SEARCH_SENTENCELENGTH; i += SEARCH_SENTENCELENGTH + SEARCH_JUMPLENGTH)
		{
			Thread thread = new Thread(new Runnable()
			{

				@Override
				public void run()
				{
					// Sicherstellen, dass nur 1 mal pro Sekunde eine
					// Suchabfrage gestartet wird.
					try
					{
						Thread.sleep(1000);
					}
					catch (InterruptedException e)
					{
						_logger.fatal(e.getMessage(), e);
						e.printStackTrace();
					}
				}
			});
			thread.start();
			String searchString = "";
			for (int j = 0; j < SEARCH_SENTENCELENGTH; j++)
			{
				if (searchString.length() > 0)
				{
					searchString += " ";
				}
				searchString += words[i + j];
			}
			_logger.debug(i + "/" + (words.length - SEARCH_SENTENCELENGTH) + " Suche nach: " + searchString);
			try
			{
				// Auf beendigung des Threads mit 1s warten
				thread.join();
			}
			catch (InterruptedException e)
			{
				_logger.fatal(e.getMessage(), e);
				e.printStackTrace();
			}
			search(searchString, buildSearchString(searchString));
		}
	}