Как создать более сложные строки запроса Lucene?

Этим вопросом является ответвление от этого вопроса. Мой запрос является двукратным, но потому что оба связаны, я думаю, что это - хорошая идея соединить их.

  • Как программно создать запросы. Я знаю, что мог начать создавать строки и анализировать ту строку с анализатором запроса. Но поскольку я собираю остатки информации от других ресурсов, существует programattical способ сделать это.
  • Каковы синтаксические правила для запросов Lucene?

Править--

Я дам пример требования для запроса, который я хотел бы сделать:
Скажите, что у меня есть 5 полей:

  1. Имя
  2. Фамилия
  3. Возраст
  4. Адрес
  5. Все

Все поля являются дополнительными, последнее поле должно искать по всем другим полям. Я пробегаюсь через каждое поле и вижу, является ли это IsNullOrEmpty (). Если бы это не, я хотел бы добавить часть своего запроса, таким образом, это добавляет соответствующую поисковую часть.
Имя и фамилия должны быть точными совпадениями и иметь больше веса затем другие поля. Возраст является строкой и если точное совпадение. Адрес может varry в порядке. Все может также varry в порядке.

Как я должен пойти об этом?

5
задан Community 23 May 2017 в 10:32
поделиться

1 ответ

Используйте класс BooleanQuery для создания объектов запроса. Создайте один из них и добавьте к нему другие объекты Query, чтобы создать более крупный дизъюнктивный запрос:

  • BooleanQuery q = new BooleanQuery ();
  • q.add (qFirstName, Occur.SHOULD);
  • q .add (qLastName, Occur.SHOULD);
  • ...

Атомарные запросы могут быть построены с помощью классов Term и TermQuery.

(Ссылки и примеры для Lucene Java, но .NET должен быть похожим.)

6
ответ дан 14 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: