Справка по запросу KQL New-Mailboxsearch Exchange 2016 - Это возможно? (X или Y) нет (Z, кроме X)

Заранее благодарим за чтение и любую помощь, которую вы можете оказать!


Я пытаюсь выполнить поиск в нескольких почтовых ящиках. Мне нужно найти все сообщения, в которых упоминаются одни слова И не упоминаются другие слова, ЗА ИСКЛЮЧЕНИЕМ тех слов, которые есть в обоих списках. Это сложный поиск. Я не знаю, как изменить логику языка запросов по ключевым словам, чтобы добиться этого.

Я понимаю, что команда поиска будет сложной и требует много времени для выполнения. Ничего страшного.

Пример:
Найдите предметы, в которых упоминается Тедди.
Мне нужны предметы, в которых упоминается Рузвельт. Мне нужны товары с упоминанием 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. Я что-то не так делаю со своими цитатами?




Спасибо за помощь!

0
задан 8 February 2019 в 17:46
2 ответа

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. Это, вероятно, сработало бы, но требует дополнительного обруча. Я намного счастливее с моим решением.

1
ответ дан 4 December 2019 в 15:45

В соответствии с вашим запросом, область фильтрации, "элементы, которые упоминают Тедди Рузвельта", включая "элементы, которые упоминают и Тедди, и Франклина". вы можете упростить команду следующим образом:

New-MailboxSearch -SearchQuery 'Teddy* OR mugwump* OR Roosevelt* OR Rough Riders* NOT (Truman* OR subject:"new-deal")'
0
ответ дан 4 December 2019 в 15:45

Теги

Похожие вопросы