Подтвердить что ты не робот

Разница между BooleanClause.Occur.Must и BooleanClause.Occur.SHOULD в lucene

Может ли кто-нибудь объяснить разницу между BooleanClause.Occur.Must и BooleanClause.Occur.SHOULD в lucene в BooleanQuery с примером?

4b9b3361

Ответ 1

BooleanClause.Occur.SHOULD означает, что предложение является необязательным, тогда как BooleanClause.Occur.Must означает, что предложение является обязательным.

Однако, если в булевом запросе есть только необязательные предложения, по крайней мере одно предложение должно соответствовать документу, который будет отображаться в результатах.

Чтобы лучше контролировать, какие документы соответствуют BooleanQuery, есть параметр minimumShouldMatch, который позволяет вам рассказать Lucene, что не менее minimumShouldMatch BooleanClause.Occur.SHOULD должны совпадать, чтобы документ появился в результатах.

Ответ 2

Я попытаюсь объяснить, используя пример:

Предположим, что существуют два предложения: Раздел A и Раздел B. Теперь эффект BooleanClause.Occur будет следующим:

  • В первом случае оба предложения A и B имеют BooleanClause.Occur.Should флаг установлен. Это будет означать, что даже если одно из условий выполнено (A или B), тогда документ будет хитом.

  • Во втором случае предложение A имеет BooleanClause.Occur.Must флаг и предложение B имеет BooleanClause.Occur.Should флаг установлен.

    В этом случае документ будет хитом, когда он "будет" удовлетворять предложению А. Если этот документ удовлетворяет условию B или нет, это не повлияет на то, что он стал хитом.

    Но если документ не удовлетворяет условию A, то независимо от того, удовлетворяет ли он условию B или нет, это не будет ударом.

  • В третьем случае оба предложения A и B имеют флаг BooleanClause.Occur.Must.

    В этом случае документ будет хитом, только когда он будет удовлетворять "обоим" предложениям. Если это не удовлетворит даже одно из предложения, то это не будет ударом.

Ответ 3

СЛЕДУЮЩАЯ статья - самая важная функция в lucene, когда ваша самая важная проблема - РЕЙТИНГ!

Когда вы используете предложение SHOULD, Lucene оценивает полученный документ путем суммирования пунктов предложения SHOULD. Таким образом, вы можете присоединиться к некоторому запросу вместе с предложением SHOULD с разными повышениями (в зависимости от их важности). Это концепция ExtendedDismaxQuery в Solr.

Ответ 4

BooleanClause.Occur.Must означает обязательное предложение. Чтобы результат возвращался, необходимо выполнить условие. В основном AND.

BooleanClause.Occur.SHOULD обозначает необязательное предложение и будет вести себя как OR