Я провел некоторые эксперименты, и, кажется, самый простой способ добиться этого - создать QueryParser
и вызвать SetAllowLeadingWildcard( true )
и выполнить поиск field:*
следующим образом:
var qp = new QueryParser( Lucene.Net.Util.Version.LUCENE_29, field, analyzer );
qp.SetAllowLeadingWildcard( true );
var query = qp.Parse( "*" ) );
(Обратите внимание, что я устанавливаю поле по умолчанию для QueryParser
в field
в его конструкторе, поэтому ищем просто "*"
в Parse()
).
Я не могу ручаться за то, насколько эффективен этот метод по сравнению с другими методами, но, будучи самым простым способом, который я могу найти, я ожидал бы, что он будет по крайней мере столь же эффективным, как field:[* TO *]
, и он избегает необходимости делать такие хакерские вещи, как field:[0* TO z*]
, что может не учитывать все возможные значения, например значения, начинающиеся с не алфавитно-цифровых символов.