在 RavenDB v4 中获取匹配的文本
Get the matched text in RavenDB v4
在 RavenDB < 4 中,您可以使用 FieldHighlightings class:
从 query/search 中获取匹配的 word/sentence
FieldHighlightings highlight = null;
hits = session
.Advanced
.DocumentQuery<FAOCRPage>("Standard/Lucene")
.Statistics(out stats)
**.Highlight(x => x.OCR, 50, 5, out highlight)**
.SetHighlighterTags("**", "**")
.Skip(pageNum*pageSize)
.Take(pageSize)
.Search(x => x.OCR, queryStr, escapeQueryOptions: EscapeQueryOptions.RawQuery)
.ToList();
string[] fragments = highlight.GetFragments(hits[0].Id)
并遍历突出显示变量以获取匹配文本。
我在 RavenDB v4 这个 class 似乎被删除了。如何获取在 query/lucene 搜索中匹配的文本,而不仅仅是找到它的文档?
即如果我们有文本 "This is a small test, they are going nowhere" 并使用通配符查询搜索 "th*",那么我会期望结果 "this" 和 "they" 以及它们在文本中出现的位置。
这不可能了吗?
目前在 v4.0 中不可能,但在 v4.1 中是可能的。
(计划几个月后发布)
在 RavenDB < 4 中,您可以使用 FieldHighlightings class:
从 query/search 中获取匹配的 word/sentenceFieldHighlightings highlight = null;
hits = session
.Advanced
.DocumentQuery<FAOCRPage>("Standard/Lucene")
.Statistics(out stats)
**.Highlight(x => x.OCR, 50, 5, out highlight)**
.SetHighlighterTags("**", "**")
.Skip(pageNum*pageSize)
.Take(pageSize)
.Search(x => x.OCR, queryStr, escapeQueryOptions: EscapeQueryOptions.RawQuery)
.ToList();
string[] fragments = highlight.GetFragments(hits[0].Id)
并遍历突出显示变量以获取匹配文本。 我在 RavenDB v4 这个 class 似乎被删除了。如何获取在 query/lucene 搜索中匹配的文本,而不仅仅是找到它的文档?
即如果我们有文本 "This is a small test, they are going nowhere" 并使用通配符查询搜索 "th*",那么我会期望结果 "this" 和 "they" 以及它们在文本中出现的位置。
这不可能了吗?
目前在 v4.0 中不可能,但在 v4.1 中是可能的。
(计划几个月后发布)