2010-11-14 22 views
1

J'utilise Solr 1.4.1 et je suis prêt à utiliser TermsComponent pour la saisie semi-automatique. Le problème est, je ne peux pas l'obtenir pour faire correspondre les chaînes avec des espaces en eux. Pour ainsi dire,Solr TermsComponent: Utilisation de caractères génériques

terms.fl=name&terms.lower=david&terms.prefix=david&terms.lower.incl=false&indent=true&wt=json

matchs toutes les chaînes commençant par "david" mais si je change à:

terms.fl=name&terms.lower=david%20&terms.prefix=david%20&terms.lower.incl=false&indent=true&wt=json

il ne correspond pas à toutes les chaînes commençant par "david". Est-ce que c'est censé être comme ça? Si oui, les n-grammes sont-ils la solution? Et quelqu'un sait-il si TermsComponent est en train d'implémenter des Tries ou des DAWG ou des arbres Raddix et si c'est efficace?

Cheers,
Parsa

Répondre

2

AFAIK TermsComponent fournit accès brut (c.-à-littérale) aux termes des champs, donc s'il n'y a pas un terme à l'espace (normalement il n'y a pas, le tokenizer des espaces prend soin de cela) il ne correspondra à rien. TermsComponent n'implémente pas les essais ou quoi que ce soit, il énumère simplement les termes dans l'index des champs.

Les ngrammes IMHO constituent une solution plus flexible pour la saisie semi-automatique.

La prochaine version de Solr aura un specific component to implement autosuggest (vous pouvez l'utiliser maintenant si vous utilisez nightly builds)