Рассмотрим SimpleAnalyzer(LuceneVersion.LUCENE_48)
с добавлением следующих документов ...
writer.AddDocument(new Document { new TextField("Query", new { Query = "Best pants in chicago" }.Query, Field.Store.YES) });
writer.AddDocument(new Document { new TextField("Query", new { Query = "Best pants in detroit" }.Query, Field.Store.YES) });
writer.AddDocument(new Document { new TextField("Query", new { Query = "Worst pants in chicago" }.Query, Field.Store.YES) });
writer.AddDocument(new Document { new TextField("Query", new { Query = "Worst pants in detroit" }.Query, Field.Store.YES) });
writer.AddDocument(new Document { new TextField("Query", new { Query = "hello world pants" }.Query, Field.Store.YES) });
с использованием SimpleQueryParser
, почему simpleQueryParser.Parse("chicago")
возвращает
value: Best pants in chicago score: 0.7554128
value: Worst pants in chicago score: 0.7554128
, но simpleQueryParser.Parse("chicago -in")
возвращает
value: Best pants in chicago score: 0.3149634
value: Worst pants in chicago score: 0.3149634
value: hello world pants score: 0.2759697
не только возвращает то, что мне не нужно, но, судя по всему, считает все не относящиеся к делу результаты (hello world pants
), потому что я добавил оператор отрицания (-).