Как выполнить сортировку по полю Lucene.Net и игнорировать общие стоп-слова, такие как «a» и «the»?

StackOverflow https://stackoverflow.com/questions/66041

  •  09-06-2019
  •  | 
  •  

Вопрос

Я нашел, как сортировать результаты запроса по заданному полю в индексе Lucene.Net, а не по баллам;все, что для этого нужно, — это поле, которое проиндексировано, но не токенизировано.Однако мне не удалось понять, как отсортировать это поле, игнорируя стоп-слова, такие как «a» и «the», чтобы, например, следующие названия книг сортировались в порядке возрастания следующим образом:

  1. Кот в мешке
  2. Хортон слышит кто

Возможно ли такое, и если да, то как?

Я использую Lucene.Net 2.3.1.2.

Это было полезно?

Решение

Я помещаю результаты, возвращаемые Lucene, в свою собственную коллекцию пользовательских объектов.Затем я могу заполнить его дополнительной информацией/контекстной информацией (и использовать такие вещи, как класс выделения, чтобы извлечь фрагмент совпадений), а также добавить разбивку по страницам.Если вы выбрали аналогичный путь, вы могли бы создать класс/объект «результата», добавить что-то вроде свойства SortBy и получить любое поле, по которому вы хотите отсортировать, удалить все стоп-слова, а затем сохранить его в этом свойстве.Теперь просто отсортируйте коллекцию на основе этого свойства.

Другие советы

Когда вы создаете свой индекс, создайте поле, содержащее только те слова, по которым вы хотите отсортировать, а затем при извлечении выполните сортировку по этому полю, но отобразите полный заголовок.

Прошло много времени с тех пор, как я использовал Lucene, но я предполагаю, что нужно добавить туда дополнительное поле для сортировки и хранения значения с уже удаленными стоп-словами.Вероятно, вы можете использовать те же анализаторы для генерации этого значения.

Кажется, есть подвох 22: вы должны маркировать поле с помощью анализатора, чтобы удалить знаки препинания и стоп-слова, но вы не можете сортировать токенизированные поля.Как тогда убрать стоп-слова без токенизации?

По поиску нашел поиск по индексу lucene .net с опцией сортировки ссылка интересна для решения твоей проблемы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top