【发布时间】:2017-03-16 18:11:43
【问题描述】:
我正在为网站列表编制索引,并且 Urls 是网站的属性之一(名称、位置是其他属性)。我想使用 url/s 搜索网站。我不想分析这个属性,而是想搜索完整的 url(关键字)。所以我的代码看起来像这样。
[Keyword(index = true)]
public IEnumerable<string> Urls {get; set;}
创建索引后,映射如下所示, “网址”:{ “类型”:“关键字” }
但是,当我搜索 URL 时,说“www.yahoo.com”,没有返回任何结果。 两个问题:
a) 为什么它不返回文件?这是一个简单的关键字搜索,因此应该返回匹配项。
b) 上述操作是否与使用默认分析器进行索引相同?在我看来,不进行分析的关键字搜索是“显式”的,并且可能更快。
谢谢。
PS:我的搜索代码使用 Nest (v5.0.0.0) 如下。
public SearchResult<Website> Search(string qry, int page, int pageSize)
{
var result = client.Search<Website>(x => x.Query(q => q.MultiMatch(mp => mp.Query(qry).Fields(f => f.Fields(f1 => f1.Name, f2 => f2.Urls, f3 => f3.Locations)))).Size(pageSize));
return new SearchResult<Website>
{
Results = result.Documents
};
}
【问题讨论】:
-
你搜索的怎么样了,你能显示你正在做的搜索请求吗?我怀疑您正在使用对查询输入执行分析的全文查询
-
添加了搜索代码。我认为你是对的。我的搜索代码解析到的低级查询可能使用的是全文。但会等待您的确认。有没有办法准确查看发送到 ES 的低级查询?谢谢。
标签: elasticsearch nest