Разработчики запросов — Не должны / Shouldn’T

#java #lucene #search-engine #elasticsearch

#java #lucene #поисковая система #elasticsearch

Вопрос:

Я новичок в поисковой системе, и мне было интересно, сможет ли кто-нибудь помочь мне уточнить поисковые запросы Must / MustNot и Should / Не следует выполнять.

Мое понимание заключается в следующем:

Запросы Must / MustNot являются абсолютными определениями (т. Е. результат должен / не обязана содержать указанное поле)

Запросы Should / ShouldNot являются относительными определениями (т. Е. в некоторых сценариях они должны / не должны содержать указанные поля)

Если это правильно, не мог бы кто-нибудь, пожалуйста, привести мне пример того, когда вы будете использовать Should / ShouldNot … и если я понимаю совершенно неправильно — не будет ли кто-нибудь достаточно любезен, чтобы объяснить это для меня (или указать мне на хороший сайт)?

Спасибо!

Ps. Я использую elastic-search (на основе Lucene) — но любые примеры / объяснения приветствуются

Ответ №1:

Ваше понимание правильное. НЕ ДОЛЖНЫ ли результаты получать меньший вес при нахождении, в то время как НЕ ДОЛЖНЫ никогда включаться.

SHOULDNOT используется, когда термин, вероятно, принадлежит другому домену, но в некоторых случаях все еще может находиться в одном документе с тем, который я ищу. Например, Google знает, что я программист Java. Когда я спрашиваю «ant», первым результатом будет «Apache Ant». Я могу использовать MUST NOT как «-Apache», или я могу использовать SHOULD NOT «Apache» на случай, если какая-то страница описывает особое место ants в мировоззрении Apache natives.

Или, например, я ищу бесплатное программное обеспечение для выполнения задачи; тем не менее, я бы рассмотрел платное, если оно не дорогое или у них есть персональная лицензия. Поэтому я бы использовал SHOULDN’T «купить сейчас», и результаты включали бы платное программное обеспечение, но ниже в списке.