【发布时间】:2017-05-08 15:42:18
【问题描述】:
我一直在努力尝试使用 Nest 库版本 5.3.1 配置和部分搜索 ElasticSearch 索引数据(相同版本适用于它的依赖项之一;Elasticsearch.Net)。
根据网上的建议,我使用数据属性在一些索引属性上指定分析器类型,如下所示:
public class Article
{
public int Id { get; set; }
[Completion(Analyzer = "standard", PreservePositionIncrements = true, PreserveSeparators = true)]
public string Title { get; set; }
public string Url { get; set; }
}
我在搜索索引中至少有一条“文章”类型的记录,其标题以“最伟大的......”开头。每当我使用下面的代码对关键字“greatest”执行部分搜索时,它都能很好地返回匹配的搜索结果。
MultiTermQueryRewrite multiqueryRewrite = null;
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*greatest*", rewrite: multiqueryRewrite);
var client = ElasticsearchClient.GetClient<Article>();
return client.Search<Article>(s => s.Query(searchQuery));
但是...如果我尝试使用下面列出的任何变体搜索“最伟大”的关键字,我不会得到任何结果。
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*the greatest*", rewrite: multiqueryRewrite);
或
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*the*greatest*", rewrite: multiqueryRewrite);
甚至
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*the?greatest*", rewrite: multiqueryRewrite);
我是 ElasticSearch 产品的新手,非常感谢任何帮助。
提前感谢您的帮助。
【问题讨论】:
标签: elasticsearch nest elasticsearch-net