Solr Fuzzy Suggester et Solr Infix Suggester via Ajax

Pour une recherche efficace sur un site web, il est important que les utilisateurs trouvent rapidement et facilement des résultats pertinents. Solr Fuzzy Suggester et Solr Infix Suggester offrent une solution efficace à cela. Ils peuvent être appelés et filtrés via des requêtes Ajax.
Publié:
Admin User
published
Solr Fuzzy Suggester et Solr Infix Suggester via Ajax

Illustration

Description du projet

Pour une recherche efficace sur un site web, il est important que les utilisateurs trouvent rapidement et facilement les résultats appropriés. Solr Fuzzy Suggester et Solr Infix Suggester offrent une solution efficace à cet égard. Ils peuvent être appelés et filtrés via des requêtes Ajax.

Le suggester est activé via le composant XML SuggestComponent dans le fichier solrconfig.xml, comme illustré dans l'exemple de code suivant :

<searchComponent name="suggest" class="solr.SuggestComponent">
  <lst name="suggester">
    <str name="name">mySuggester</str>
    <str name="lookupImpl">FuzzyLookupFactory</str>
    <str name="dictionaryImpl">DocumentDictionaryFactory</str>
    <str name="field">suggest_field</str>
    <str name="weightField">weight</str>
    <str name="suggestAnalyzerFieldType">text_general</str>
    <str name="buildOnStartup">true</str>
  </lst>
</searchComponent>

En utilisant Solr Fuzzy Suggester et Solr Infix Suggester, les utilisateurs peuvent obtenir rapidement et facilement des résultats pertinents, car ils bénéficient de suggestions et de fonctionnalités d'auto-complétion. Les résultats de la requête peuvent ensuite être filtrés pour garantir que seuls les résultats les plus pertinents sont affichés.

En mettant en œuvre ces technologies, les sites web peuvent offrir une fonctionnalité de recherche améliorée et une meilleure expérience utilisateur.

Exemple de configuration (Coloration syntaxique)

<searchComponent name="suggest" class="solr.SuggestComponent">
  <lst name="suggester">
    <str name="name">mySuggester</str>
    <str name="lookupImpl">FuzzyLookupFactory</str>
    <str name="dictionaryImpl">DocumentDictionaryFactory</str>
    <str name="field">cat</str>
    <str name="weightField">price</str>
    <str name="suggestAnalyzerFieldType">string</str>
    <str name="buildOnStartup">false</str>
  </lst>
</searchComponent>

L'image montre ce que fait le suggester : l'entrée ne donne pas de correspondance exacte, et le Solr Suggester renvoie des suggestions similaires. Il existe plusieurs façons de déterminer la similarité des chaînes de caractères. J'en mentionnerai deux ici.

1) Fuzzy (distance de Levenshtein)

La première possibilité est le fuzzy (flou), qui est basé sur l'algorithme de distance de Levenshtein.

En JavaScript, cela ressemblerait à ceci :

function levenshtein(a, b) {
  var t = [], u, i, j, m = a.length, n = b.length;
  if (!m) { return n; }
  if (!n) { return m; }
  for (j = 0; j <= n; j++) { t[j] = j; }
  for (i = 1; i <= m; i++) {
    for (u = [i], j = 1; j <= n; j++) {
      u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : Math.min(t[j - 1], t[j], u[j - 1]) + 1;
    } t = u;
  } return u[n];
}
// a and b are strings

2) Infix (correspondance de préfixe et index Lucene)

La deuxième possibilité est l'infixe, qui est basé sur la correspondance de préfixe avec des jetons dans le texte indexé. Il utilise l'index Lucene pour son dictionnaire. Lucene est une bibliothèque de recherche en texte intégral (Apache Software Foundation) qui contient des bibliothèques de programmation open source.

En pratique, il s'agit d'une structure indexée qui crée des jetons pendant le traitement. Les espaces peuvent marquer la fin ou le début d'une chaîne. Les chaînes individuelles sont normalisées pour de meilleures correspondances — par exemple, la conversion des majuscules en minuscules — et plusieurs variantes connexes du dictionnaire sont également indexées.

L'avantage réside dans les options qui peuvent être définies dans la requête, ce qui offre une plus grande flexibilité.

Que font les moteurs de recherche commerciaux ?

Une combinaison des deux approches est essentiellement ce que proposent la plupart des moteurs de recherche. Lors de la saisie dans le champ de recherche, des chaînes individuelles sont suggérées dans le contexte d'autres chaînes et termes. Il en résulte une recherche sémantique.

Pour les grands fournisseurs de recherche, ces résultats sont ajustés commercialement et dirigent les utilisateurs vers des index prioritaires. Les pages sont triées et catégorisées via des règles et des directives. Les groupes d'intérêt sont déterminés via des technologies de suivi, des algorithmes d'IA et du marketing de base de données, et la recherche est adaptée au groupe cible.