Я не очень понимаю, почему люди говорят о пересечении для этого.
Lucene поддерживает комбинацию запросов, используя BooleanQuery, который вы можете вкладывать неограниченно, если нужно.
QueryParser такжеподдерживает ключевое слово AND, которое требует наличия в документе обоих слов.
Пример (Lucene.NET, C #):
var outerQuery + new BooleanQuery();
outerQuery.Add(new TermQuery( new Term( "FieldNameToSearch", word1 ) ), BooleanClause.Occur.MUST );
outerQuery.Add(new TermQuery( new Term( "FieldNameToSearch", word2 ) ), BooleanClause.Occur.MUST );
Если вы хотите разделить слова (ваш фактическийпоисковый запрос), используя тот же анализатор, есть способы сделать это тоже.Хотя QueryParser может быть проще в использовании.
Вы можете просмотреть этот ответ, например, о том, как разбить строку, используя тот же анализатор, который вы использовали для индексации:
Нет совпадений при поиске "mvc2" с lucene.net