#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 «купить сейчас», и результаты включали бы платное программное обеспечение, но ниже в списке.