Solr Fuzzy Suggester e Solr Infix Suggester su Ajax

Per una ricerca efficace sul sito web, è importante che gli utenti trovino rapidamente e facilmente risultati pertinenti. Solr Fuzzy Suggester e Solr Infix Suggester offrono una soluzione efficiente per questo. Possono essere richiamati e filtrati tramite query Ajax.
Pubblicato:
Admin User
published
Solr Fuzzy Suggester e Solr Infix Suggester su Ajax

Illustrazione

Descrizione del Progetto

Per una ricerca efficiente su un sito web, è importante che gli utenti trovino rapidamente e facilmente i risultati appropriati. Solr Fuzzy Suggester e Solr Infix Suggester offrono una soluzione efficiente per questo. Possono essere richiamati e filtrati tramite query Ajax.

Il suggeritore viene attivato tramite il componente XML SuggestComponent nel file solrconfig.xml, come mostrato nel seguente esempio di codice:

<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>

Utilizzando Solr Fuzzy Suggester e Solr Infix Suggester, gli utenti possono ottenere rapidamente e facilmente risultati pertinenti, poiché ricevono suggerimenti e funzionalità di completamento automatico. I risultati delle query possono quindi essere filtrati per garantire che vengano visualizzati solo i risultati più rilevanti.

Implementando queste tecnologie, i siti web possono offrire funzionalità di ricerca migliorate e una migliore esperienza utente.

Esempio di Configurazione (Evidenziatore di Sintassi)

<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'immagine mostra cosa fa il suggeritore: l'input non produce una corrispondenza esatta e Solr Suggester restituisce suggerimenti simili. Esistono diversi modi per determinare la somiglianza tra stringhe. Ne menzionerò due qui.

1) Fuzzy (distanza di Levenshtein)

La prima possibilità è fuzzy, che si basa sull'algoritmo della distanza di Levenshtein.

In JavaScript, apparirebbe così:

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 (corrispondenza del prefisso e indice Lucene)

La seconda possibilità è infix, che si basa sulla corrispondenza del prefisso con i token nel testo indicizzato. Utilizza l'indice Lucene per il suo dizionario. Lucene è una libreria di ricerca full-text (Apache Software Foundation) che contiene librerie di programmazione open-source.

In pratica, è una struttura indicizzata che crea token durante l'elaborazione. Gli spazi possono segnare la fine o l'inizio di una stringa. Le singole stringhe vengono normalizzate per una migliore corrispondenza — ad esempio, convertendo le lettere maiuscole in minuscole — e vengono indicizzate anche più varianti correlate dal dizionario.

Il vantaggio risiede nelle opzioni che possono essere definite nella query, il che fornisce maggiore flessibilità.

Cosa fanno i motori di ricerca commerciali?

Una combinazione di entrambi gli approcci è essenzialmente ciò che offrono la maggior parte dei motori di ricerca. Quando si inserisce l'input nel campo di ricerca, le singole stringhe vengono suggerite nel contesto di altre stringhe e termini. Ciò si traduce in una ricerca semantica.

Per i grandi fornitori di ricerca, questi risultati vengono adattati commercialmente e indirizzano gli utenti verso indici prioritari. Le pagine vengono ordinate e categorizzate tramite regole e linee guida. I gruppi di interesse vengono determinati tramite tecnologie di tracciamento, algoritmi di intelligenza artificiale e marketing di database, e la ricerca viene adattata al gruppo target.