gpt4 book ai didi

azure-cognitive-search - Azure 搜索突出显示部分匹配

转载 作者:行者123 更新时间:2023-12-04 08:40:39 25 4
gpt4 key购买 nike

我打开了命中高亮显示,它对整个单词匹配效果很好。但是我们在用户指定的每个单词的末尾附加了一个通配符,并且突出显示不适用于部分匹配项。我们正在取回结果,但是 .Highlights 对象为 null,因此没有突出显示可用于部分匹配。

以下是我们如何配置 SearchParameters:

var parameters = new SearchParameters
{
Filter = newFilter,
QueryType = QueryType.Full,
Top = recordsPerPage,
Skip = skip,
SearchMode = SearchMode.Any,
IncludeTotalResultCount = true,
HighlightFields = new List<string> { "RESULT" },
HighlightPreTag = "<font style=\"color:blue; background-color:yellow;\">",
HighlightPostTag = "</font>"
};
return parameters;

response = indexClient.Documents.Search<SearchResultReturn>(query, parameters);

这是我们的查询字符串的示例:("the") the*^99.95

我们的想法是搜索用户指定的确切字符串(多个单词),然后对指定的每个单词进行通配符搜索。

所以对于上面的例子,我们得到了所有包含“the”和“the*”的结果,但只有单词“the”有高亮显示。 “They”、“There”等没有任何突出显示,即使“They”是结果中唯一匹配的条目(“the”不在结果中)。

查询再次返回正确的结果,只是突出显示不适用于部分匹配项。

是否需要一些其他设置才能突出显示部分匹配项?

最佳答案

感谢您报告问题。

不幸的是,Azure 搜索中的一个已知限制是,对于广泛的通配符搜索,有时不会突出显示匹配项。突出显示是搜索后的一个独立过程。检索到匹配的文档后,突出显示器会在搜索索引中查找与通配符条件匹配的所有术语,并在突出显示检索到的文档时使用术语。对于广泛的通配符搜索查询,如 a*(或 the*),出于性能原因,荧光笔仅根据它们在语料库中的频率使用前 N 个最重要的术语。在您的示例中,“他们”和“那里”未包含在突出显示中可能是因为它们出现在大多数文档中。

由于这是通配符查询的限制,一种解决方法是预处理索引以避免发出通配符/前缀查询。请查看自定义分析 ( https://learn.microsoft.com/en-us/rest/api/searchservice/custom-analyzers-in-azure-search ) 例如,您可以使用 edgeNgram tokenfilter 并将单词的前缀存储在索引中,并使用前缀发出常规术语查询(不带“*”运算符)

希望这对您有所帮助。如果您还有其他问题,请告诉我。

内特

关于azure-cognitive-search - Azure 搜索突出显示部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49799976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com