2009-12-12 6 views
1

Je construis un système de recherche basé sur Java Lucene qui, en plus, ajoute un certain nombre de méta-champs, dont l'un est un champ sourceId, qui indique l'origine de l'entrée.Lucene recherche par valeurs numériques

J'essaie maintenant de récupérer tous les documents d'une source particulière, mais l'index ne semble pas être en mesure de les trouver. Toutefois, si je recherche une valeur générique, les documents renvoyés ont tous la valeur correcte pour ce champ.

La requête Lucene J'utilise est assez simple, essentiellement index-source-id:1 mais qui ne retourne aucun résultat, si je cherche content:a* je reçois des dizaines de documents, qui, lorsqu'on lui a demandé tous, retournent la valeur 1 pour la index-source-id valeur, ce qui est correct.

Des idées?

Répondre

1

J'ai seulement travaillé avec le port PHP, cependant, avez-vous vérifié quel analyseur de texte vous utilisez? Ce FAQ semble indiquer que comme la version de PHP, vous devez utiliser un différent qui ne supprime pas les chiffres.
Vous pouvez trouver une liste de analyzers here

Juste pour être sûr, vous avez défini l'id pour être indexable?

+0

J'ai défini l'ID pour être indexable, yup. Je cherchais une liste d'analyseurs, mais je ne pouvais pas trouver un qui a dit qu'il traitait en particulier des numéros, il semble que StandardAnalyzer fait, ce que je pensais avait été déprécié, alors peut-être que cela pourrait aider. – Martin

+1

La reconstruction de l'index, puis la recherche avec StandardAnalyzer au lieu de SimpleAnalyzer ont fait l'affaire! – Martin

+1

Pour référence future, vous ne voulez pas analyser (ni tokenize) id champs puisqu'ils sont supposés être atomiques par nature et comme Einstein nous a montré avec ses copains dans Manhattan Project, diviser des atomes n'est pas une bonne chose à faire. .. – Esko