目前,我们正在使用Bot框架SDK(问答情节)构建知识库机器人,我们在Azure搜索中索引数据,索引的结构包含可搜索的Edm.String(de.Microsoft)属性,如(纯文本,标题)和可搜索的集合(Edm.String)(de.Microsoft)属性,例如(关键字,产品类别和相互问题)。
管理员会通过自定义用户界面提供相互问题,所以我的问题是如何存储(索引)管理员提供的相互问题,或者最好在删除后对相互问题进行索引停止话语/噪音词?
如您所知,将使用机器人的最终用户将不会使用相同的索引问题,他们可能会以不同的方式制定问题,我已经做了一些手动测试,我发现情况正在变得更好当删除关键词时,在其他情况下更糟糕的是,我只想了解Azure搜索查询数据类型字符串列表的可搜索属性时发生的情况。
我在发送搜索请求时使用 searchMode :any和 queryType :full,下面是相关问题在删除停止之前的样子示例单词和删除后。
示例1
"MutualQuestions": [
"Kann ich im Konto ein individuelles Entgelt anlegen, obwohl es im Produkt keines gibt?",
"Ich möchte eine andere Zinsberechnungsmethode als im Produkt einstellen."
],
"MutualQuestionsNoNoise": [
"Konto individuelles Entgelt anlegen, Produkt",
"Zinsberechnungsmethode Produkt einstellen."
]
示例2
{
"MutualQuestions": [
"Wo binde ich Produkte auf der Internetseite ein?",
"Wie binde ich Produkte in die Internetseite ein?"
],
"MutualQuestionsNoNoise": [
"binde Produkte Internetseite"
]
}
提前致谢
答案 0 :(得分:1)
句子中只有关键短语可以提高搜索结果得分。如果用户搜索特定关键字,则仅使用此关键字的字符串将获得更高分数。例如,如果您搜索'周末旅行,则句子'令人敬畏的周末旅行将获得比&更高的分数#39;非常棒的周末旅行' 。如果您使用language-specific analyzer,则会在索引和搜索时自动删除该语言的停用词。
但是,正如您所指出的,这取决于用户如何制定他们的查询。
How full text search works in Azure Search可以很好地描述不同的查询类型和搜索模式,以及两者如何影响评分。注意:字符串集合的处理方式与连接字符串相同。 I.e。:'很棒的旅行'相当于[' awesome',' trip']。
通常选择查询类型和搜索模式需要对代表性查询进行一些实验。对于您的情况,我会尝试删除" noise",并使用 searchMode = any 。在这种情况下,我不认为 queryType 很重要。但是,这取决于您的用户的高级程度。如果您想支持正则表达式等,那么 queryType = full 会更合适。