1
votes

Les synonymes de la recherche Azure non pris en compte

Je construis un bot soutenu par Azure Search, nous avons défini une carte de synonymes, l'avons ajoutée à un index existant, mais lorsque nous recherchons par des termes qui n'existent que sous forme de synonymes et non indexés, les résultats de la recherche sont les mêmes qu'avant l'ajout la carte des synonymes, semble que les synonymes sont complètement ignorés.

Existe-t-il un moyen de vérifier si la carte est prise en compte et pourquoi mes requêtes ne les prennent pas en compte?


6 commentaires

Bonjour, pourriez-vous partager un exemple de requête, la règle de la carte de synonymes qui, selon vous, devrait s'appliquer et le document auquel vous vous attendez à ce que la requête corresponde? Merci!


Bonjour @Yahnoosh, Voici la carte que j'ai créée: {"name": "topicmap", "format": "solr", "synonymes": "IoT, Internet of Things, Internet of Thing, iot IOT => iot \ n "} Et j'ai des documents indexés avec le terme iot, cependant si je fais une recherche par 'Internet des objets', le meilleur score que j'obtiens est de 0,009135721 et si je recherche par IoT j'obtiens un score de 4.


Je suis confus. D'abord, vous avez signalé que les synonymes ne sont pas appliqués et que les documents contenant un synonyme n'ont pas été récupérés. Maintenant, votre commentaire donne l'impression que le document est en cours de récupération, mais les scores ne sont pas ceux que vous attendez. Veuillez clarifier votre question et, idéalement, indiquer quels documents ont été retournés et lesquels vous vous attendez à ce qu'ils correspondent.


Salut @Yahnoosh, Mon point est que si je demande par "iot", j'obtiens des résultats avec un score élevé parce que les documents ont ce terme. Ce que je veux, c'est obtenir des résultats similaires en recherchant le synonyme que j'ai créé (Internet des objets) qui devrait se résoudre à "iot" et je m'attends à ce que le score soit élevé, mais j'obtiens le même score que celui que j'obtenais avant de créer le la carte des synonymes et l'appliquer au champ.


Salut @Yahnoosh, je crois avoir trouvé le problème. Semble être lié au fait que mon synonyme a plusieurs mots (Internet des objets). Si j'interroge en utilisant des guillemets (search = "Internet of Things"), le synonyme est appliqué. Puis-je faire quelque chose pour éviter d'avoir à interroger en utilisant des guillemets pour que le synonyme soit résolu?


En plaçant des guillemets autour d'un ensemble de termes, vous informez l'analyseur de requêtes que vous souhaitez qu'ils soient traités ensemble, ce qui permet de les comparer aux termes de la carte des synonymes. Une question similaire a été posée ici: stackoverflow.com/questions/51200616/...


3 Réponses :


0
votes

Appelez / indexes / [votre nom d'index]? api-version = 2017-11-11 endpoint pour obtenir la définition de l'index, puis vérifiez que la carte des synonymes est attachée au champ approprié, qui devrait ressembler à ceci:

{
  "name": "[your field name]",
  "type": "Edm.String",
  "searchable": true,
  "filterable": false,
  "retrievable": true,
  "sortable": true,
  "facetable": false,
  "key": false,
  "indexAnalyzer": null,
  "searchAnalyzer": null,
  "analyzer": null,
  "synonymMaps": [
    "topicmap"
  ]
},

Si topicmap n'est PAS là, vous devez mettre à jour votre définition d'index en appelant la méthode POST du même point de terminaison.


1 commentaires

Oui, c'est là



0
votes

J'ai ajouté l'attribut de champ synonymmap à tous les champs de mon index. Nous devons faire cette étape lors de la création de l'index. Cela fonctionne dans mon cas.


0 commentaires

0
votes

J'ai résolu le problème en ajoutant le champ synonymMaps à tous les autres champs associés de l'index. Par exemple, mon index avait un champ d'emplacements et je l'ai modifié comme indiqué ci-dessous: { "name": "locations", "type": "Collection (Edm.String)", "interrogeable": vrai, "filtrable": vrai, "récupérable": vrai, "sortable": faux, "facettable": faux, "clé": faux, "indexAnalyzer": nul, "searchAnalyzer": nul, "analyseur": "en.lucène", "synonymMaps": [ "mysynonymmap" ] }

Vous devriez donc ajouter synonymmap à d'autres champs également.


0 commentaires