Pouvez-vous s'il vous plaît dire comment effectuer une recherche simple de texte intégral dans RavenDb. La base de données est stockée dans le document: Movie {Name = "Pirates des Caraïbes"}. Je souhaite que ce document a été trouvé sur l'expression de recherche "Pirates Carribean" ou toute autre combinaison de mots.RavenDB recherche plein texte
Répondre
Ce que vous soucier de ne rien à voir avec le texte intégral - par défaut Lucene fonctionne sur une base OU et ce que vous voulez est un ET
Si je vous, je ferais
String[] terms = searchTerm.Split(" "); // Or whatever the string.split method is
et
.Where("Name:(" + String.Join(" AND ", terms) + ")");
Votre index devrait ressembler à quelque chose comme
public class Movie_ByName : AbstractIndexCreationTask
{
public override IndexDefinition CreateIndexDefinition()
{
return new IndexDefinitionBuilder<Movie>
{
Map = movies => from movie in movies
select new { movie.Name, market.Id },
Indexes =
{
{x => x.Name, FieldIndexing.Analyzed}
}
}
.ToIndexDefinition(DocumentStore.Conventions);
}
Vous n'avez pas besoin de stockage, vous ne demandez pas les données de lucene directement à tout moment. Vous ne voulez peut-être même pas d'index (vous pouvez en fait vouloir FieldIndexing.Analyzed, et peut-être s'en tirer en utilisant simplement des requêtes dynamiques ici)
À vous de voir.
Boris, La réponse de Rob a le bon index, mais c'est un peu gênant pour l'interrogation. Vous pouvez le faire en utilisant:
session.Query<Movie, Movie_ByName>()
.Search(x=>x.Name, searchTerms)
.ToList()
qui
Ça va ... ??? –
@RonnieOverby Et ce fut le moment où il a été mangé par un ours. – ehdv
... travail. <- une estimation. –
Voilà comment j'acheived une recherche à long terme "ANDing".
Tout d'abord, assurez-vous que votre champ est indexé et analysé:
public class MyIndex: AbstractIndexCreationTask<MyDocument>
{
public MyIndex()
{
Map = docs => from d in docs
select new { d.MyTextField };
Index(x => x.MyTextField, FieldIndexing.Analyzed);
}
}
requête puis du client:
var query = session.Query<MyDocument, MyIndex>();
query = theSearchText
.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries)
.Aggregate(query, (q, term) =>
q.Search(x => x.MyTextField, term, options: SearchOptions.And));
- 1. Recherche plein texte recherche
- 2. Recherche plein texte SQL
- 3. mysql recherche plein texte
- 4. postgres recherche plein texte
- 5. Recherche plein texte CONTAINSTABLE
- 6. recherche plein texte vista
- 7. MySql Recherche plein texte
- 8. recherche plein texte dans Subsonic
- 9. Recherche plein texte dans LINQ
- 10. Problème de recherche plein texte
- 11. recherche plein texte sur bigtable
- 12. Django MySQL recherche plein texte
- 13. Recherche plein texte avec joker
- 14. Recherche plein texte sur une table
- 15. Recherche plein texte dans Mysql - comportement illogique
- 16. Recherche plein texte impliquant 2 tables
- 17. SQL Server - Pourcentage basé Recherche plein texte
- 18. mysql recherche plein texte et caractères spéciaux
- 19. Recherche plein texte sur plusieurs tables
- 20. Recherche plein texte like in InnoDB
- 21. recherche plein texte pour l'ensemble de données
- 22. Recherche plein texte avec Firebird et Delphi
- 23. recherche plein texte sur le site flash
- 24. Recherche plein texte - Sélectionnez les premières lignes
- 25. Recherche plein texte sur Google App engine?
- 26. Recherche plein texte MySQL sur plusieurs tables
- 27. apache cassandra requête/recherche plein texte
- 28. recherche plein texte erreur de procédure stockée
- 29. Comment utiliser Hibernate Recherche plein texte
- 30. Recherche plein texte en arabe dans RoR
Ou searchTerm.Replace (" "" ET"), bien que peut-être vous voudrez peut-être vous méfier des entrées vides et tout ça. –
Est-ce que le texte des marchés/du marché provient d'un copier coller par hasard? –
Oui, j'ai utilisé l'autre question comme exemple –