【发布时间】:2023-03-23 10:07:01
【问题描述】:
我将 NEST 与 ElasticSearch 结合使用,并尝试通过允许用户在搜索框中键入搜索短语来进行搜索。除了用户输入搜索短语时,他们需要确保字段名称与 Elastic 搜索中的字段名称大小写相同这一事实之外,一切都正常工作。
例如,我的一个字段名为 bookTitle。如果他们像下面这样搜索,那么它可以工作
bookTitle:“两个城市的故事”
如果他们像下面的示例那样搜索它不起作用
书名:“两个城市的故事” 书名:《两个城市的故事》
我用来搜索的代码如下。有没有人对我如何解决这个问题有任何想法。我希望有一个 ElasticSearch/NEST 设置允许我这样做,而不是对搜索文本做一些丑陋的事情,比如查找“BookTitle”并替换为“bookTitle”。
public List<ElasticSearchRecord> Search(string searchterm) {
var results = _client.Search<ElasticSearchRecord>(s => s
.Query(q => q
.QueryString(qs => qs
.DefaultField("content")
.Query(searchterm)
)
));
return results.Documents.ToList();
}
非常感谢任何帮助。
【问题讨论】:
-
因此,如果我的问题正确,您的用户可以在您的输入框中指定一个完整的 Lucene 查询字符串,对吗?如果是这样,它对用户体验不是很友好,因为正如您所看到的,您的用户不知道您选择了哪些字段名称。有多少个字段是可搜索的,或者哪些是您想要搜索的所有字段?
标签: elasticsearch nest