根据https://azure.microsoft.com/pl-pl/blog/azure-search-synonyms-public-preview/文章,我应该在synonymMaps中使用多个单词/短语同义词
多词同义词
在许多全文搜索引擎中,对同义词的支持仅限于单个单词。我们的团队设计了一个解决方案,允许Azure Search支持多单词同义词。这允许短语查询(“”)在使用同义词时正常工作。如果有人将“热浴缸”映射到“惠而浦浴缸”,然后搜索“大型热水浴缸”,Azure搜索将返回同时包含“大型热浴缸”和“大型涡流浴缸”的匹配项。
然而,在我的例子中,我得到了子单词的匹配。
我的synonymMap看起来像这样:
{"name":"map",
"format":"solr",
"synonyms":"Gastroenterology (acute and chronic),vomiting, diarrhoea, weight loss\n"}我在搜索索引中有一些文档,其中包含了胃肠病学(急性和慢性)等医学学科。
我在?search="vomiting"之后收到的内容是:
{
"@search.score": 1.0405536,
"@search.highlights": {
"disciplines/name": [
"<em>Acute</em> <em>and</em> <em>chronic</em> ear disease",
"<em>Acute</em> <em>and</em> <em>chronic</em> skin disease",
"<em>Gastroenterology</em> (<em>acute</em> <em>and</em> <em>chronic</em>)",
"Haematology (<em>acute</em> <em>and</em> <em>chronic</em>)",
"Respiratory medicine (<em>acute</em> <em>and</em> <em>chronic</em>)"
],我期待着:
{
"@search.score": 1.0405536,
"@search.highlights": {
"disciplines/services/translatedName": [
"<em>Gastroenterology (acute and chronic)</em>",
],我做错了什么吗?
我试着将主词删减为一个词,比如胃肠病学,但其中一些根本无法删减。提供像synonyms => "Gastroenterology (acute and chronic)"这样的报价也是行不通的。
已更新
我想知道为什么我会认为有问题。好吧,我提供了:
{"name":"map",
"format":"solr",
"synonyms":"Gastroenterology (acute and chronic),vomiting, diarrhoea, weight loss\n"}并实际使用:
{"name":"map",
"format":"solr",
"synonyms":"Gastroenterology (acute and chronic),vomiting, diarrhoea, weight loss
=> Gastroenterology (acute and chronic)\n"}在这种情况下,I vae 4结果:
"@odata.count": 4,
"value": [
{
"@search.score": 1.0137179,
"@search.highlights": {
"disciplines/services/translatedName": [
"<em>Acute</em> <em>and</em> <em>chronic</em> ear disease",
"<em>Acute</em> <em>and</em> <em>chronic</em> skin disease",
"<em>Gastroenterology</em> (<em>acute</em> <em>and</em> <em>chronic</em>)",
"Haematology (<em>acute</em> <em>and</em> <em>chronic</em>)",
"Respiratory medicine (<em>acute</em> <em>and</em> <em>chronic</em>)"
],
"equipment/translatedName": [
"Emergency <em>and</em> crictial care",
"In house skin <em>and</em> ear cyology"
],
"disciplines/translatedName": [
"Anaesthesia <em>and</em> analgesia",
"Emergency <em>and</em> critical care"
]
},
...
{
"@search.score": 0.33542877,
"@search.highlights": {
"disciplines/services/translatedName": [
"<em>Chronic</em> pain management"
],
"disciplines/translatedName": [
"Anaesthesia <em>and</em> analgesia"
]
},
...
{
"@search.score": 0.13757591,
"@search.highlights": {
"equipment/translatedName": [
"Emergency <em>and</em> crictial care"
],
"disciplines/translatedName": [
"Emergency <em>and</em> critical care"
]
},
...
{
"@search.score": 0.07112321,
"@search.highlights": {
"disciplines/services/translatedName": [
"<em>Chronic</em> pain management"
]
},你能给我解释一下在那种情况下它是怎么工作的吗?
发布于 2019-08-07 06:13:38
Azure Search确实支持多个单词的同义词,并且在您的案例中的结果与预期一致。这里有几件事需要说明。
First ?search="vomiting"将返回与文档中任意位置的“呕吐”或指定同义词匹配的文档。集合disciplines/name中包含多个单词的同义词Gastroenterology (acute and chronic)与您的查询匹配,从而得到要返回的文档。
第二件事可能是造成混乱的原因,那就是突出显示。Azure search当前不支持短语突出显示。如果与短语查询一起使用,它将突出显示短语中的各个术语。由于匹配的文档在其他地方也有单独的术语,因此所有这些术语都被突出显示。有关更多详细信息,请查看Azure search highlights for phrases with double quotes。
你可以通过索引一个只包含Gastroenterology (acute and chronic)的测试文档,然后索引另一个只包含acute and chronic的测试文档来测试这一点。查询结果应该只返回第一个文档。
如果您对突出显示短语有严格的要求,那么在检索搜索结果后,您必须进行一些客户端处理
https://stackoverflow.com/questions/57199211
复制相似问题