Notre projet nécessite des recherches en temps quasi réel et une mise à jour constante. Les données sont actuellement stockées dans une base de données MySQL et l'index Lucene est mis à jour lorsque la base de données est modifiée.Requête ou concept Lucene/MySQL mixte
Nous avons la capacité de recherche actuellement où nous le voulons. Cependant, nous essayons d'ajouter la possibilité de "marquer" les documents dans l'index/base de données. Comme les pots de données peuvent contenir des millions d'enregistrements, nous ne souhaitons pas mettre à jour l'index Lucene pour le marquage (ou s'il existe un moyen de mettre à jour en masse Lucene qui pourrait fonctionner aussi). Nous avons plutôt une table d'identifiants de documents dans MySQL que nous aimerions utiliser pour déterminer les ensembles de tags. La meilleure option que j'ai trouvée jusqu'ici est de récupérer la liste des ID sous la forme d'un tableau d'entiers, de les trier (donc je n'ai besoin que de faire une boucle), de faire une boucle et de rechercher des correspondances entre les deux. ce n'est pas idéal car on risque de perdre le tri).
La tentative d'utilisation de la liste des ID Lucene dans la requête "IN" dans MySQL échoue car le nombre de documents peut être dans les millions et les chokes MySQL sur celui-ci.
Un aperçu de la façon dont nous pourrions optimiser cela ou le faire? Une autre suggestion était un 2ème index et l'utilisation d'un MutliSearcher, mais je ne suis pas entièrement sûr de savoir comment procéder en raison de la nécessité de mettre à jour l'index avec un million de lignes possible lors de la mise à jour ou de la suppression d'un ensemble de tags.