Examine Search Fails for two character words

We use Examine to index a database with rule definitions. Recently I became aware that for a basic search phrase, such as “admission motion” works fine, but as soon as I add a two character word in the middle such as “admission on motion”, we get a NULL reference error:

[NullReferenceException: Object reference not set to an instance of an object.]
   Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) +353
   Lucene.Net.Search.BooleanQuery.Rewrite(IndexReader reader) +367
   Lucene.Net.Search.IndexSearcher.Rewrite(Query original) +29
   Lucene.Net.Search.Query.Weight(Searcher searcher) +52
   Lucene.Net.Search.Searcher.Search(Query query, Filter filter, Int32 n, Sort sort) +29
   Examine.LuceneEngine.SearchResults.DoSearch(Query query, IEnumerable`1 sortField) +258
   Examine.LuceneEngine.Providers.BaseLuceneSearcher.Search(ISearchCriteria searchParams) +181
   Ethics.DAL.EthicsDB.getSearchedOpinions(String searchPhrase) +3109
   Ethics.Opinions.Page_Load(Object sender, EventArgs e) +682

At first look, I cannot see anything wrong with my code. Thoughts?

	public static DataTable getSearchedOpinions(string searchPhrase)
	{
		searchPhrase = Regex.Replace(searchPhrase, @"[^a-zA-Z0-9'.\s/\*""]{1,40}", String.Empty);
		searchPhrase = searchPhrase.Replace(" & ", " & ");
		searchPhrase = searchPhrase.Replace(" and ", " ");
		searchPhrase = Regex.Replace(searchPhrase, @"\s+", " ");
		string[] splitSearchPhrase = Utilities.Split(searchPhrase, " ", "\"");

		DataTable dt = new DataTable();
		dt.Columns.Add("opinion_ID", typeof(Int32));
		dt.Columns.Add("title", typeof(string));
		dt.Columns.Add("summary", typeof(string));
		dt.Columns.Add("bodytext", typeof(string));
		dt.Columns.Add("opinionDate", typeof(DateTime));
		dt.Columns.Add("smallOpinionDate", typeof(string));
		dt.DefaultView.Sort = "opinion_ID DESC";

		Examine.SearchCriteria.IBooleanOperation filter = null;

		int i = 0;

		var criteria2 = ExamineManager.Instance
		.SearchProviderCollection["EthicsOpinionsSearcher"]
		.CreateSearchCriteria();

		filter = null;

		i = 0;
		for (i = 0; i < splitSearchPhrase.Length; i++)
		{
			if (filter == null)
			{
				filter = criteria2
				.GroupedOr(new string[] { "opinion_Num", "title", "summary", "bodytext", "opiniondate", "smallOpinionDate" }, splitSearchPhrase[i].Escape())
				.Or()
				.GroupedOr(new string[] { "title", "summary", "bodytext" }, splitSearchPhrase[i].Fuzzy(0.7f));
			}
			else
			{
				filter = filter
				.And()
				.GroupedOr(new string[] { "title", "summary", "bodytext", "opiniondate" }, splitSearchPhrase[i].Escape())
				.Or()
				.GroupedOr(new string[] { "title", "summary", "bodytext" }, splitSearchPhrase[i].Fuzzy(0.7f));
			}
		}
		ISearchResults SearchResults2 = ExamineManager.Instance.SearchProviderCollection["EthicsOpinionsSearcher"].Search(filter.Compile());

		foreach (var row in SearchResults2)
		{
			DataRow dr = dt.NewRow();
			dr["opinion_ID"] = row.Fields["opinion_ID"];
			dr["title"] = row.Fields["title"];
			dr["summary"] = row.Fields["summary"];
			dr["bodytext"] = row.Fields["bodytext"];
			dr["opinionDate"] = row.Fields["opinionDate"];
			dr["smallOpinionDate"] = row.Fields["smallOpinionDate"];
			dt.Rows.Add(dr);
		}

		return dt;
	}

This is a companion discussion topic for the original entry at https://our.umbraco.com/forum/71626-examine-search-fails-for-two-character-words