Здесь нужно сделать несколько замечаний:
В вашем определении индекса, я полагаю, вы установили timeStamp
в качестве строки. В противном случае вы не смогли бы выполнить поисковый запрос, поскольку поля DateTime недоступны для поиска. Во-первых, я бы посоветовал не рассматривать timeStamp
как строку. Это связано с тем, что доступные для поиска поля проходят через анализ (один из них - токенизация) Ссылка на разбор запроса . В вашем случае запрос timestamp
(скажем, 2018-05-03
) будет разбит на токены на более мелкие составляющие (2018, 05, 03), и будут возвращены документы, содержащие любое из этих условий. Вот почему вы наблюдаете за тем, что видите.
Ваш сценарий представляется классическим случаем «фильтрации» результатов на основе критериев, за которыми следует «поиск» по отфильтрованным документам. Для этого вам необходимо сделать следующее:
- Используйте фильтр на временной метке, чтобы он не проходил анализ
- Для отфильтрованных результатов примените поисковый запрос.
- Ссылка
Однако я настоятельно рекомендую сделать столбец timeStamp
датой и временем для более разумной семантики.
В качестве примера, вот как вы могли бы достичь комбо фильтра + поиска:
parameters = new SearchParameters()
{
Filter = "timeStamp eq '2018-05-03'"
};
Documents.SearchAsync("fieldname:val*", parameters);