2009-10-31 5 views
2

J'essaie de trouver un moyen de demander des dates dans Lucene. Fondamentalement, j'ai un événement qui a une date de début, date de fin et peut également se produire régulièrement. La façon dont j'ai essayé de le faire était de créer un champ d'index dans Lucene qui énumérerait toutes les dates possibles séparées par une virgule (ou un espace vide suffirait, vraiment) et de lui appliquer une recherche de plage. Les dates ont été indexés comme ceci:Lucene problème avec l'indexation des événements récurrents

événement A partir du 31-10-09: "20091031"

événement B à partir du 31-10-09 et durable pendant 2 jours: « 20091031, 20091101, 20091102"

événement C récurrent tous les samedis pour les 3 prochains samedis: « 20091031, 20091107, 20091114 »

cela cependant ne fonctionne pas parce que si je cherchais des événements entre 20091030 et 20091101, il devrait la liste événements A, B et C, mais parce que B et C avaient s Certaines occurrences en dehors de la plage requise ne les ont pas trouvées.

Une idée de comment résoudre le problème? Merci

+0

Vous n'avez pas montré le code qui crée le document (ou au moins les champs dans ce document), ni le code que vous utilisez pour interroger, il est donc peu probable que vous obteniez une bonne réponse. –

+0

Je ne pense pas que le code est pertinent à ma question car il s'agit plus d'un "comment le feriez-vous?" que "où est une erreur dans mon code?" sorte de chose. –

Répondre

1

Une façon possible de faire cela est de créer un document distinct pour chaque occurrence de chaque événement. Les deux événements B et C auront chacun trois documents, chacun d'entre eux ayant un champ de date et un champ de nom d'événement. Une simple recherche de plage pourrait alors trouver les événements.

Une question distincte est de savoir si cela doit être fait dans Lucene. S'il vous plaît voir Search Engine versus DBMS pour une discussion sur des questions connexes.

+0

C'est en fait une bonne idée. Merci! En ce qui concerne la décision Lucene/DBMS, il est trop tard pour ce type de décision à ce stade du projet. Cependant, mon algorithme de recherche est plus compliqué que la simple recherche de plages et même si je suis sûr que je pourrais implémenter la pondération de différents attributs, etc. dans le SGBDR, cela semble être trop compliqué. –

Questions connexes