When you have invalid data in the searchindex table, the maintenance script rebuildtextindex.php is there to fix that. However, this currently does not work:
The script currently does only update the _SQL index_, not the _rows_ of the searchindex table. So rows, which should not be there (e.g. as they point to a deleted page), will _stay_(!) in the index. That way the index is created based on wrong data.
rebuildtextindex.php should first rebuild the _actual table data_, before it recreates the SQL index (based on that data).