我正在使用天蓝色搜索,我有一个控制台应用程序,其代码如下所示,工作正常。
DocumentSearchResult<Hotel> results;
Console.WriteLine("Search started\n");
results = indexClient.Documents.Search<Hotel>("smart", new SearchParameters { Top=5 });
WriteDocuments(results);
目前正在搜索带有&#34; smart&#34;字样的文字。这是直接的,我需要的是我在表中有几个字段,我想根据字段进行搜索。
例如让我有两个字段 1)标题 2)SoldDate
我必须编写代码来查找具有标题&#39; john&#39;其销售日期&lt;当前日期。
我该怎么做才能实现这个目标?
答案 0 :(得分:2)
您可以通过搜索和过滤器实现您想要的效果:
// Approach #1
string currentDate = DateTime.UtcNow.ToString("O");
var parameters = new SearchParameters()
{
Filter = "soldDate lt " + currentDate,
Top = 5
}
results = indexClient.Documents.Search<Hotel>("john", parameters);
这会将文档过滤到只有soldDate
之前currentDate
的文档,然后搜索过滤后的文档,以便文档匹配,如果任何可搜索的字段包含&#34; john&#34; 。您可以将此范围缩小到title
字段,如下所示:
// Approach #2
string currentDate = DateTime.UtcNow.ToString("O");
var parameters = new SearchParameters()
{
Filter = "soldDate lt " + currentDate,
SearchFields = new[] { "title" },
Top = 5
}
results = indexClient.Documents.Search<Hotel>("john", parameters);
或者像这样:
// Approach #3
string currentDate = DateTime.UtcNow.ToString("O");
var parameters = new SearchParameters()
{
Filter = "soldDate lt " + currentDate,
QueryType = QueryType.Full,
Top = 5
}
results = indexClient.Documents.Search<Hotel>("title:john", parameters);
您使用哪种方式取决于您是希望所有搜索字词都限于特定字段集(方法#2),还是希望特定字词与特定字段匹配(方法#3)。
SearchParameters
的引用位于docs.microsoft.com。