Как получить частичное совпадение, а также полное совпадение с помощью поиска в спящем режиме - PullRequest
0 голосов
/ 18 декабря 2018
FullTextEntityManager fullTextEntityManager =Search.getFullTextEntityManager(emanager);
QueryBuilder qb=fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Person.class).get();
Query statusNotArchieved = qb.keyword().onField("name").matching("John Cena").createQuery();

Теперь я должен получить результаты, где результат должен содержать имя человека, содержащее Джона Сина, а также любую фразу, которая содержит отдельно Джона или Сину.Так что, если для имени персонажа есть три строки, содержащие {"John Cena", "John micheal", "Micheal Cena"}, я хочу, чтобы все результаты отдавали приоритет John Cena в качестве первого результата

1 Ответ

0 голосов
/ 18 декабря 2018

Запрос, который вы задали, должен вести себя точно так же, как вы описали: любой документ, содержащий "John" или "Cena", будет сопоставлен, при этом оба документа, получившие более высокий балл, будут отображаться в верхней части результатов.

То есть, если вы включили анализ для поля "имя", что по умолчанию имеет место.

Если вы получаете другое поведение, пожалуйста, предоставьте дополнительную информацию:

  • Полный код вашей Person сущности
  • Полный код, использованный для построения запроса (вы только дали начало.
  • Краткое описание результатов, которые вы получаете: документы,их порядок и содержимое поля «имя».
...