Je n’ai pas utilisé lucene. La dernière fois que j’ai posé la question (il y a plusieurs mois, peut-être un an), des personnes ont suggéré Lucene. Si je ne devrais pas utiliser Lucene, que devrais-je utiliser? Comme le dit l’exemple, il y a des articles marqués comme ceci
Si un utilisateur recherche des pommes, cela ne me dérange pas s’il existe une préférence entre 1,2 et 4. Cependant, j’ai vu de nombreux forums le faire que je détestais, c’est lorsqu’un utilisateur recherche des carottes aux pommes 2 et 3 ont des résultats élevés alors qu’il est difficile de trouver même bien que cela corresponde mieux à ma recherche.
Aussi, j’aimerais avoir la possibilité de faire des recherches de carottes – des pommes qui ne me rapporteront que 3. Je ne suis pas sûr de ce qui devrait se passer si je cherche des carottes à la banane, Je recherche des pommes, des carottes, je serai heureux.
Lucene peut-elle faire ça? et par où dois-je commencer? J’ai essayé de le rechercher et quand je vois beaucoup de cours, je vais voir des tutoriels parler de documents, de pages Web, mais aucun n’a été clair sur ce qu’il faut faire quand j’aime taguer quelque chose. Si Lucene, que dois-je utiliser pour le marquage?
Lucene pour .net semble être mature. Pas besoin d’utiliser Java ou SOLR
Le langage de requête standard de Lucene permet des termes de recherche et une négation de rang égal.
Donc, si votre index Lucene avait un champ “tag”, votre requête serait
tag:apple* OR tag: carrot*
Ce qui donnerait un rang égal à chaque mot et une pondération plus importante au document avec les deux balises
Pour nier une balise, utilisez cette
tag:carrot* NOT tag:apple*
Exemple simple pour montrer l’indexation et l’interrogation avec Lucene ici
Edit: Vous pouvez utiliser Lucene. Voici une explication sur la manière de procéder dans Lucene.net. Quelques bases de Lucene sont:
Veuillez lire cet article de blog sur la création et l’utilisation d’un index Lucene.net.
Je suppose que vous étiquetez les articles de blog. Si je me trompe totalement, merci de le dire. Pour rechercher des balises, vous devez les représenter en tant qu’entités Lucene, notamment en tant que jetons à l’intérieur d’un champ “balises”.
Une façon de procéder consiste à atsortingbuer un document Lucene par article de blog. Le document aura au moins les champs suivants:
Indexation: chaque fois que vous ajoutez une étiquette à une publication, en supprimez une ou que vous la modifiez, vous devez indexer la publication. L’parsingur transformera les champs en leur représentation de jeton.
Document doc = new Document(); doc.Add(new Field("id", i.ToSsortingng(), Field.Store.YES, Field.Index.NO)); doc.Add(new Field("content", text, Field.Store.YES, Field.Index.TOKENIZED)); doc.Add(new Field("tags", tags, Field.Store.YES, Field.Index.TOKENIZED)); writer.AddDocument(doc);
La partie restante est la récupération. Pour cela, vous devez créer un QueryParser et lui transmettre une chaîne de requête, comme ceci:
QueryParser qp = new QueryParser(); Query q = qp.Parse(s); Hits = Searcher.Search(q);
La syntaxe dont vous avez besoin pour s sera:
tags: apples tags: carrots
Pour chercher des pommes ou des carottes
tags: carrots NOT tags: apples
Voir la syntaxe Lucene Query Parser Syntax pour plus de détails sur la construction de s.