Заранее благодарим за чтение и любую помощь, которую вы можете оказать!
Я пытаюсь выполнить поиск в нескольких почтовых ящиках. Мне нужно найти все сообщения, в которых упоминаются одни слова И не упоминаются другие слова, ЗА ИСКЛЮЧЕНИЕМ тех слов, которые есть в обоих списках. Это сложный поиск. Я не знаю, как изменить логику языка запросов по ключевым словам, чтобы добиться этого.
Я понимаю, что команда поиска будет сложной и требует много времени для выполнения. Ничего страшного.
Пример:
Найдите предметы, в которых упоминается Тедди.
Мне нужны предметы, в которых упоминается Рузвельт.
Мне нужны товары с упоминанием mugwump
Мне нужны предметы с упоминанием Rough Riders
Я не хочу ничего, где упоминается Франклин Рузвельт.
НО если в сообщении упоминаются и Тедди, и Франклин, мне это нужно.
Ничего не хочу с надписью new-deal в теме
Я не хочу ничего, где упоминается Трумэн.
Я хочу использовать подстановочные знаки.
Поиск «Рузвельта» обязательно приведет к «Франклину». Я не могу в одностороннем порядке исключить "Франклина", не пропустив "Тедди"
Мой текущий запрос:
New-MailboxSearch -SearchQuery "Teddy* OR mugwump* OR Roosevelt* OR 'Rough Riders*' NOT ((Franklin* NOT Teddy*) OR Truman* OR subject:'new-deal')"
Выполнить указанный выше поиск. Получено 9500 просмотров. Я нашел несколько электронных писем с «бредом» и «франклином пирсом». Что-то здесь не так.
Когда я запускал «Тедди * ИЛИ Рузвельт *», я получил 10 000 просмотров.
Когда я запустил «Тедди * ИЛИ Рузвельт * НЕ (Франклин * НЕ Тедди *)», я получил 9500 просмотров. Так я думал, что это сработало?
В случае, если это была проблема в скобках, я также попробовал «(Тедди * ИЛИ Рузвельт *) НЕ (Франклин * НЕ Тедди *)». Я все еще получил 9 500 обращений.
Заключение в скобки положительных поисковых запросов не имело значения.
Затем я попробовал: «(Тедди * ИЛИ Рузвельт *) НЕ (Франклин *) Я все еще получил 9 500 запросов. В результатах были результаты Франклина, так что здесь что-то действительно не так.
Это проблема с цитатой? Я не могу найти четкую документацию по одинарным кавычкам "" и двойным кавычкам "" в отношении того, как они влияют на операторы поиска и круглые скобки.
В документации Microsoft KQL об этом не упоминается. Большинство запросов Google для KQL относится к Sharepoint, которая имеет другой наклон (и возможности) по сравнению с Exchange. Ряд обращений Exchange на самом деле относится к AQS.
Я не нашел хороших примеров сложного KQL-запроса, подобного моему, с вложенными условиями поиска ....
Я попытался заменить все одинарные кавычки на двойные. Мои результаты упали до 4000. Это был просто -EstimateOnly, у меня не было возможности запустить фактическое задание и проверить результаты.
1. Сработает ли двойное отрицание «НЕ (Франклин * НЕ Тедди *)?»
2. Есть ли другой способ сказать «включите это, если оно не включает и то»?
3. Есть ли лучший способ расположить скобки?
4. Я что-то не так делаю со своими цитатами?
Спасибо за помощь!
I FIGURED OUT A SOLUTION. Я хотел бы поделиться своим последним запросом, а также некоторые важные уроки, которые я извлек на этом пути.
.
УРОК 1. КАК РЕАЛИЗОВАТЬ НЕСКОЛЬКО ПАРЕНТЕТИЧЕСКИХ УТВЕРЖДЕНИЙ
.
В запросе можно использовать только одну скобку. Однако внутри этого запроса можно поставить другой набор скобок.
.
Ex: -Комплекс поиска "(a ИЛИ b) И (c ИЛИ d)"
Будет ПРОИЗВОДСТВЕННАЯ ОШИБКА
Исх.: -поисковый запрос "a AND (b AND (c OR d))"
WORKS
Я не знаю, можно ли использовать несколько родительских скобок внутри родителя, или вы можете гнездиться на третьем уровне вниз. Не обязательно было это выяснять. УРОК 2. МНОЖЕСТВЕННЫЕ И/ИЛИ ОПЕРАНДЫ
Признание, я так и не понял, влияет ли порядок операндов на то, как SearchQuery анализирует результаты. Мой последний запрос в основном состоял из операндов ИЛИ, поэтому я не тратил на это время.
.
Исх.: - Поисковый запрос "a AND b OR c AND d"
- эквивалентно ли это "(a AND b) OR (c AND d)"?
.
- или это эквивалентно "а И (b) И (с) И (d)"?
Я не знаю. Не обязательно было это выяснять.
Кое-что для будущих читателей. УРОК 3. УПАКОВКА - ТЕРМИНЫ ДЛЯ ПОИСКА С {__}. '__' "__"
Вы можете использовать { }, ' ', или " " для обёртывания поискового запроса.
-SearchQuery { wordone OR wordtwo OR "word three"]
-SearchQuery 'wordone OR wordtwo OR "word three""
-SearchQuery "wordone OR wordtwo OR 'word three'"
-Думаю, внутри запроса могут быть некоторые особенности того, как каждая обёртка разбивает буквальные термины с кавычками/двойными кавычками или подстановочными знаками. У меня была некоторая неопределенность с моими живыми тестами, которые заставили меня так думать.
К тому времени, как я создал тестовый почтовый ящик с небольшим набором тестовых сообщений для экспериментов, я остановился на одиночных кавычках с двойными кавычками внутри. Это то, что я использовал, когда выяснял, что работает, так что я никогда не возвращался к дальнейшим экспериментам.
ТЕСТОВЫЙ ПОЧТОВЫЙ ЯЩИК
Я создал тестовый почтовый ящик. Я отправил этот почтовый ящик 16 писем.
Тема каждого электронного письма была "(01-16) (Хорошо или плохо)"
.
Тело каждого письма содержало поисковые термины в различных шаблонах, основанных на реальных примерах
.
Желательный шаблон электронных писем использовал "Хорошо" в предмете, а нежелательный - "Плохо"
.
Бывший: Тема: "05 Good", Body: "Roosevelt mugwump"
Бывший: Тема: "07 Плохо", тело: "Франклин Рузвельт"
Бывший: Тема: "08 Хорошо", тело: "Тедди Франклин Рузвельт"
Если результат моего запроса возвращал какие-нибудь "плохие" сообщения, то я знал, что они были неудачными
.
Если результат моего запроса не вернул сообщение "Хорошо", то я знал, что оно было неудачным
.
Я использовал эту среду, чтобы разобраться в логике и подрезать ненужные результаты.
ЗАКЛЮЧИТЕЛЬНЫЙ -ПОИСКОВЫЙ ЗАПРОС
С помощью этого тестового почтового ящика и уроков, приведенных выше, я построил следующий запрос:
New-MailboxSearch -Name 2019Feb7test13 -Force -SourceMailboxes user1,user2,user3 -StartDate 1/1/1890 -EndDate 1/1/1940 -SearchQuery 'teddy* OR roosevelt* OR mugwump* OR "rough riders*" NOT (franklin* NOT (teddy* OR mugwump* OR "rough riders")) NOT "new-deal" NOT truman*' -TargetMailbox discoveryresults -TargetFolder 2019Feb7test13 -ExcludeDuplicateMessages $true -LogLevel Full -StatusMailRecipients me
(Мой настоящий запрос был немного сложнее, чем этот, но этот пример работает, чтобы проиллюстрировать мое решение)).
Разобрав это -SearchQuery apart we have:
Совпадает с любым из: плюшевый, розовый, полынь, грубый всадник
.
Не совпадает: new-deal, truman
Не совпадает: Франклин, когда он также не совпадает с плюшевым, полынью, грубыми всадниками
Первое условие поднимает все "роузвельты", включая "роузвельты Франклина".
.
Третье условие отбрасывает все, что угодно с "Франклином", без плюшевых, ползучих и грубых всадников.
ПЛАН РЕЗЕРВНОГО КОПИРОВАНИЯ
Если бы я не смог найти решение этой проблемы, мой план резервного копирования состоял бы из двух частей
.
1. Выполняйте поиск без фильтрации. Только положительные ИЛИ термины. Отправьте результаты во временный почтовый ящик, а не в ящик для Обнаружения.
.
2. Запустите Поисковый почтовый ящик на этом временном почтовом ящике. Найдите все элементы, соответствующие терминам, которые мне не нужны, и используйте переключатель -DeleteContent. Это, вероятно, сработало бы, но требует дополнительного обруча. Я намного счастливее с моим решением.
В соответствии с вашим запросом, область фильтрации, "элементы, которые упоминают Тедди Рузвельта", включая "элементы, которые упоминают и Тедди, и Франклина". вы можете упростить команду следующим образом:
New-MailboxSearch -SearchQuery 'Teddy* OR mugwump* OR Roosevelt* OR Rough Riders* NOT (Truman* OR subject:"new-deal")'