1

J'utilise Zend et j'ai besoin d'une recherche. Les docs de Zend ne sont pas géniaux donc j'ai eu quelques questions faciles à répondre mais pas directement évidentes. J'utilise Lucene pour rechercher une base de données SQLQuelques questions Lucene

  1. Comment associer l'index de mon élément au texte de cet élément. Donc, s'ils recherchent et trouvent l'article, comment puis-je récupérer son index? Autant que je sache, vous ne pouvez que retourner le texte de la recherche. Lorsque j'ajoute un élément au document contenant toutes les données, mais que le document est déjà créé, est-il simplement un document ouvert ('document'), $ doc = new Doc(), $ doc-> addDocument(), commit()? Je comprends que je mets à jour le document Lucene chaque fois que j'ajoute quelque chose à la base de données. En optimisation, devrais-je réoptimiser chaque fois que j'ajoute quelque chose? Est-ce inefficace? Devrais-je le faire une fois par semaine?

Désolé de demander ce qui semble être des questions évidentes, et merci pour votre aide à l'avance.

Répondre

2
  1. 'Index, et tu trouveras' - Tu dois indexer ce que tu veux être retourné finalement. En d'autres termes, si vous voulez pouvoir renvoyer l'identifiant d'enregistrement 1389 lors de la recherche de son texte "Flux Capacitator", vous devez stocker un document ayant le texte dans un champ et l'identifiant dans un autre champ. Le champ id n'a pas besoin d'être indexé, mais il doit être stocké pour que vous puissiez le récupérer.
  2. Ce que vous cherchez est une action 'mettre à jour le document'. Lucene ne les a pas vraiment. Vous devez d'abord supprimer le document, puis ajouter un nouveau document contenant les informations mises à jour. Revenez maintenant au point 1, prenez le champ d'identification que vous avez ajouté là et faites le indexé (disons comme mot-clé), parce que vous devrez l'employer comme identifiant unique du document afin de le supprimer.
  3. Bonne question. Cela dépend beaucoup de votre cas d'utilisation. Avez-vous un «temps mort» quotidien, lorsque votre site/base de données est relativement inactif? Ce serait le moment d'optimiser. Avez-vous pas un tel moment? Vous pouvez renoncer à l'optimisation et prendre une petite (par exemple 5-10%) pénalité de performance, qui pourrait également être atténuée en utilisant le Merge Factor.

J'espère que cela a du sens. Si ce n'est pas le cas, veuillez demander dans les commentaires.

+0

pense que je l'ai eu! Merci! – Ethan

+0

En fait, j'ai une question. Supposons que j'ai un test de recherche qui contient le mot "football". Si je cherche "pied", cela ne semble pas venir. Est-ce qu'il y a un moyen de faire ça? – Ethan

+0

Essayez d'utiliser "pied *". –

0

point 3) est traité dans Lucene 2.9 comme TRN (NearRealtimeSearch) mis en œuvre au moyen de SegmentReader + utilisation RamDirectory interne

check OtisGospodnetic wiki entry