2013-06-05 5 views
2

Je veux savoir si nous pouvons rechercher un tableau de valeurs pour un champ dans Lucene?Comment rechercher un tableau de chaînes de recherche avec Lucene.Net

Par exemple:

String s[] = {"John","Daniel", "Doe"---------------------------until 50 or 1000}; 

Toutes les valeurs de chaîne sont pour le champ FirstName. Est-il possible de rechercher plusieurs valeurs dans un champ sans que l'opération soit coûteuse?

Merci.

Répondre

2

Vous pouvez juste faire,

fieldName: John Daniel Doe ... 

Tous les termes seront OR ed, de sorte que le jeu de résultats contiendra tous les documents qui correspondent à l'une des valeurs.

Le code pour générer une telle requête peut être,

var nameValues = new[] { "John", "Daniel", "Doe", ... }; 
var query = new QueryParser(currentVersion, fieldName, analyzer) 
       .Parse(string.Join(" ", nameValues)) 
+0

Thanks.However, Ma requête est de prendre environ 5 secondes pour afficher le résultat. En fait, mon scénario est un peu plus compliqué. Les valeurs du tableau String [] sont le résultat de ma recherche. Je ne veux pas vraiment les stocker et ensuite les récupérer. Je veux prendre le résultat d'une recherche puis de la recherche je suppose. Laissez-moi vous expliquer mon scénario. Disons que je recherche une personne nommée John. Je veux limiter les résultats de John à une zone particulière "722204" puis si je reçois un coup pour John dans la zone 722204 alors je veux prendre son ID et ensuite chercher à nouveau tous les Johns avec la même ID quelle que soit leur région. – Huzaifa

+0

Cette requête fonctionne très bien cependant. En bref, y a-t-il un moyen de chercher et de re-chercher? – Huzaifa

+0

Je pense que vous pourriez juste récupérer le 'John' et ensuite utiliser son 'Id' faire une autre recherche, peut-être contre un champ différent. Vous devrez expliquer votre logique métier plus abstraitement pour obtenir une «grande image» du cas de l'utilisateur. – rae1

Questions connexes