Как выполнять поиск «содержит», а не «начинается с» с помощью Lucene.Net

Мы используем Lucene.NET для реализации полнотекстового поиска на веб-сайтах клиентов. Сам поиск уже работает, но теперь мы хотим внести изменения.

В настоящее время ко всем терминам добавляется * , что приводит к тому, что Lucene выполняет то, что я бы классифицировал как поиск StartsWith .

В будущем мы хотели бы иметь поиск, который выполняет что-то вроде Содержит , а не StartsWith .

Мы используем

  • Lucene.Net 2.9.2.2
  • StandardAnalyzer
  • QueryParser по умолчанию

Примеры:

(Название: Orch *) соответствует: Orchestra

, но:

(Title: rch *) не соответствует: Orchestra

Мы хотим первый а второй соответствует обоим оркестру .

В основном я хочу прямо противоположное тому, что было задано в этом вопросе, я не уверен, почему для этого человека Lucene по умолчанию выполнила Contains , а не StartsWith : У меня такое чувство, что это как-то связано с Анализатором, но я не уверен.

12
задан Community 23 May 2017 в 12:24
поделиться