Fermer

novembre 30, 2023

Activer la fonctionnalité de suggestion et de vérification orthographique dans Solr/Blogs/Perficient

Activer la fonctionnalité de suggestion et de vérification orthographique dans Solr/Blogs/Perficient


Apache Solr fournit plusieurs fonctionnalités et récemment, j’ai utilisé les fonctionnalités de suggestion automatique et de vérification orthographique dans mon projet. La principale exigence était d’intégrer une fonctionnalité proposant des suggestions sur le terme de recherche. Par exemple, une zone de texte active le composant de suggestion, qui affiche la liste des suggestions lorsque l’utilisateur saisit un terme de requête dans la zone de texte, et l’utilisateur peut sélectionner dans la liste pour compléter le terme de recherche. Vous pouvez également utiliser la fonction de vérification orthographique et le composant de suggestion pour corriger automatiquement le terme de recherche. Pour utiliser ces API, nous avons besoin de Sitecore 9 ou version ultérieure.

Dans mon projet, quelques composants déroulants ont été implémentés dans React JS, et d’autres ont utilisé le composant SXA OOTB Search. Si nous utilisons le composant SXA OOTB, il utilise des index SXA pour lesquels nous n’avons besoin d’aucune modification. Nous pouvons tout configurer via Sitecore lui-même.

Tout d’abord, activons la fonctionnalité dans Solr pour le composant de recherche personnalisé,

Solr Suggest (fonctionnalité de saisie semi-automatique)

Configurer un composant suggestif dans Solr

Pour activer le composant suggestif pour l’index Solr, ouvrez le solrconfig.xml fichier de l’index conf dossier. Nous devons décommenter/ajouter la ligne de code ci-dessous.

<!--Start: Search component: Solr Suggester-->
  <searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
      <str name="name">Suggester Name</str>
      <str name="lookupImpl">Select the lookup implementation</str>
      <str name="dictionaryImpl">Select the dictionary implementation</str>
      <str name="field">add filed name</str>
      <str name="suggestAnalyzerFieldType">string/text_general</str>
      <str name="buildOnStartup">false</str>
      <str name="buildOnCommit">false</str>
      <str name="exactMatchFirst">true</str>
    </lst>
  </searchComponent>
  <!--End: Search component: Solr Suggester-->

Deux choses doivent être configurées correctement dans les configurations ci-dessus,

  • Paramètre d’implémentation du dictionnaire
  • Paramètre d’implémentation de recherche

Implémentation du dictionnaire

Nous devons configurer cela dans le « dictionnaireImpl » dans l’extrait de code ci-dessus. Nous pouvons utiliser l’implémentation ci-dessous à différentes fins. En outre, vous pouvez sélectionner plusieurs dictionnaires dans un seul composant de recherche de suggestion. Pour plus d’informations, vous pouvez vous référer à Documentation Solr.

DocumentDictionaryFactory – Il prend des termes, des pondérations et une charge utile facultative indexée.

DocumentExpressionDictionaryFactory – C’est la même chose que ci-dessus, « DocumentDictionaryFactory, » mais ici, l’utilisateur peut préciser l’expression dans le champ « expression de poids» pour une réponse plus raffinée.

HighFrequencyDictionaryFactory – Si nous l’utilisons, il répertorie les termes les plus recherchés et les plus populaires et supprime les termes les moins fréquents.

FileDictionaryFactory – Utilisez-le uniquement pour afficher les résultats/suggestions du fichier externe.

Implémentation de la recherche

Nous devons configurer cela sous le «rechercheImpl » dans l’extrait de code ci-dessus. Il existe plusieurs implémentations disponibles qui s’appliquent à des scénarios spécifiques. J’ai essayé uniquement l’implémentation ci-dessous dans mon projet, mais de nombreuses options peuvent apporter des solutions. Pour faire référence à d’autres implémentations, reportez-vous à ceci lien.

AnalyzingLookupFactory – Si vous avez utilisé cette implémentation, elle analyse d’abord le texte de recherche et conserve les suggestions dans les données pondérées de la mémoire FST.

FuzzyLookupFactory – C’est la même chose que «AnalyseLookupFactory » mise en œuvre; en outre, la fonctionnalité de vérification orthographique est activée par défaut.

AnalyzingInfixLookupFactory – Cette implémentation analyse le texte de recherche et fournit une liste de suggestions basées sur les correspondances de préfixe avec n’importe quel terme/texte/champ indexé.

FSTLookupFactory – Il s’agit d’une implémentation de recherche basée sur l’automatisation, et ici, ils contiennent toujours toutes les suggestions dans le FST, mais Solr ne le recommande que si vous avez des résultats hautement adaptés aux développeurs.

TSTLookupFactory – C’est une représentation ternaire.

Configurez le gestionnaire de requêtes pour le composant de recherche ci-dessus

Pour activer le gestionnaire de requêtes pour le composant de suggestion ci-dessus pour l’index Solr, ouvrez le fichier solrconfig.xml fichier de l’index conf dossier. Nous devons décommenter/ajouter/mettre à jour la ligne de code ci-dessous, et pour en savoir plus sur les paramètres utilisés dans le gestionnaire de requêtes ci-dessus, reportez-vous à ceci lien.

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
  <lst name="defaults">
    <str name="suggest">true</str>
    <str name="suggest.count">response count</str>
  </lst>
  <arr name="components">
    <str>suggest</str>
  </arr>
</requestHandler>

Pour utiliser les fonctionnalités ci-dessus dans le backend, nous pouvons utiliser l’API, qui est une extension du Sitecore existant. Recherche de contenu API et suivez les étapes ci-dessous pour utiliser l’API requise dans votre projet.

Étape 1 : Installation de la liste ci-dessous DLL du NuGet directeur,

  • SolrNet.dll
  • Sitecore.ContentSearch.dll
  • Sitecore.ContentSearch.SolrProvider.dll
  • Sitecore.ContentSearch.SolrNetExtension.dll

Étape 2 : importez les espaces de noms ci-dessous,

  • Sitecore.ContentSearch.SolrNetExtension
  • Sitecore.ContentSearch.SolrProvider.SolrNetIntegration

Étape 3 : Vous pouvez désormais utiliser l’API Suggest dans votre référentiel. Créer un objet de type SolrSuggestQuery, attribuez les termes de recherche/demande dans cet objet et appelez la fonction de suggestion sur l’index sélectionné pour recevoir la réponse dans SolrSuggestHandlerQueryResults, qui comprend toutes les suggestions que nous recevons selon le texte/requête de recherche. Reportez-vous à la ligne de code ci-dessous,

public static IEnumerable<string> GetListOfSuggestions(string SearchTerm)
{
  using(var index = ContentSearchManager.GetIndex("Add-the-name-of-index-here").CreateSearchContext())
  {
     SolrSuggestQuery query = term; 
     var options = new SuggestHandlerQueryOptions
     {
       Parameters = new SuggestParameters
        {
              Count = 3;
              Build = true;
        }
     };
     var result = index.Suggest(query, options);
     return result.Suggestions[<MySuggester>].Suggestions.Select(a=>a.Term);
  }
}

Note: MonSuggesteur est le nom du composant de suggestion que nous avons ajouté dans le composant de recherche sous la configuration Solr.

Vérification orthographique Solr

Configurer un composant de vérification orthographique dans Solr

Pour activer le composant de vérification orthographique, nous devons décommenter/ajouter la ligne de code ci-dessous, disponible dans solrconfig.xml de tous les indices Solr.

<!-- Spell Check - The spell check component can return a list of alternative spelling suggestions. http://wiki.apache.org/solr/SpellCheckComponent -->
  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
    <str name="queryAnalyzerFieldType">text_general</str>
    <!-- Multiple "Spell Checkers" can be declared and used by this component -->
    <!-- a spellchecker built from a field of the main index -->
    <lst name="spellchecker">
      <str name="name">default</str>
      <str name="field">_text_</str>
      <str name="classname">solr.DirectSolrSpellChecker</str>
      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->
      <str name="distanceMeasure">internal</str>
      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
      <float name="accuracy">0.5</float>
      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->
      <int name="maxEdits">2</int>
      <!-- the minimum shared prefix when enumerating terms -->
      <int name="minPrefix">1</int>
      <!-- maximum number of inspections per result. -->
      <int name="maxInspections">5</int>
      <!-- minimum length of a query term to be considered for correction -->
      <int name="minQueryLength">4</int>
      <!-- maximum threshold of documents a query term can appear to be considered for correction -->
      <float name="maxQueryFrequency">0.01</float>
      <!-- uncomment this to require suggestions to occur in 1% of the documents <float name="thresholdTokenFrequency">.01</float> -->
    </lst>

Décommentez/ajoutez également la ligne de code ci-dessous dans le même solrconfig.xml fichier pour le gestionnaire de requêtes pour la fonction de vérification orthographique.

<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <!-- Solr will use suggestions from both the 'default' spellchecker and from the 'wordbreak' spellchecker and combine them. Collations (re-written queries) can include a combination of corrections from both spellcheckers -->
      <str name="spellcheck.dictionary">default</str>
      <str name="spellcheck">on</str>
      <str name="spellcheck.extendedResults">true</str>
      <str name="spellcheck.count">10</str>
      <str name="spellcheck.alternativeTermCount">5</str>
      <str name="spellcheck.maxResultsForSuggest">5</str>
      <str name="spellcheck.collate">true</str>
      <str name="spellcheck.collateExtendedResults">true</str>
      <str name="spellcheck.maxCollationTries">10</str>
      <str name="spellcheck.maxCollations">5</str>
    </lst>
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
  </requestHandler>

Pour capturer le résultat de la vérification orthographique, nous devons installer le même NuGet packages que nous avons installés pour le composant Suggest ci-dessus. On peut utiliser SolrNetProxy.GetSpellcheck pour obtenir la liste des suggestions pour l’API de vérification orthographique.

Activer la fonctionnalité de saisie semi-automatique dans le composant de recherche Sitecore SXA OOTB

Si vous utilisez le composant OOTB de recherche Sitecore SXA, pour activer les suggestions, nous devons suivre les étapes ci-dessous pour activer la prédiction, et il utilise les index SXA en arrière-plan pour générer les suggestions de recherche. Reportez-vous aux captures d’écran ci-dessous avec ces étapes,

Étape 1 : Définissez le Portée de la recherchequi permet de définir la portée de la recherche dans l’arborescence de contenu.
Étape 2 : Définissez le nombre de suggestions que nous devons afficher dans la liste déroulante du Max. prédictif nombre de résultats.
Étape 3 : Vous pouvez également définir les versions linguistiques sous le Filtrage de la langue par défaut.

Propriétés du contrôle de zone de recherche

J’espère que cet article de blog vous aidera à implémenter la fonctionnalité de suggestion automatique et de vérification orthographique à l’aide de Solr. N’hésitez pas à ajouter un commentaire ci-dessous si vous avez des questions ou des commentaires.

Bon apprentissage!






Source link

novembre 30, 2023