使用 RavenDB 在一个查询中对同一字段进行全文搜索
本文关键字:字段 文搜索 搜索 RavenDB 一个 使用 查询 | 更新日期: 2023-09-27 18:31:48
我有一个对象,其中包含一个存储在RavenDB中的字符串字段。例如:
public class SomeObject
{
public string SomeText = "hello world";
}
我希望能够在同一查询中检查以下两项:
- 检查整个字符串是否以某个值开头。在这种情况下:
- "地狱"会匹配
- "你好"会匹配
- "你好W"会匹配
- "世界"不匹配
- "世界你好"不匹配
- 检查字符串是否包含某些术语。假设它们是空格分开的,在这种情况下:
- "地狱"不匹配
- "你好"会匹配
- "你好W"不匹配
- "世界"将匹配
- "世界你好"会匹配
设置索引(我假设?)以便能够在同一查询中执行此操作的好方法是什么?
编辑:澄清了我希望能够在同一查询中检查这两件事。
看看这里。我想你可以做一个Where(n => n.StartsWith(...))
和Search(...)
查询的组合。
我最终将两个字段添加到索引中,这两个字段都基于 SomeText
。
一个使用StandardAnalyzer
进行分析,另一个使用LowerCaseKeywordAnalyzer
进行分析。
这使我可以使用LowerCaseKeywordAnalyzer
索引的字段进行搜索。如果任何术语以任何内容开头而不是以它开头的整个字符串,则使用由StandardAnalyzer
索引的字段将生成命中。
可以使用由StandardAnalyzer
索引的字段并行搜索术语。
我不知道这是否是最好的解决方案,但它解决了我的问题。