¿Puede indicar cómo realizar búsquedas simples de texto completo en RavenDb. La base de datos está almacenada documento: Película {Name = "Pirates of the Carribean"}. Desearía que este documento se haya encontrado en la frase de búsqueda "Piratas del Caribe" o en cualquier otra combinación de palabras.RavenDB búsqueda de texto completo
Respuesta
Lo que se está preocupando no es nada que ver con el texto completo - por defecto Lucene funciona sobre una base O y lo que quiere es una Y
Si yo fuera tú me gustaría hacer
String[] terms = searchTerm.Split(" "); // Or whatever the string.split method is
y
.Where("Name:(" + String.Join(" AND ", terms) + ")");
Su índice debe ser algo como
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);
}
No necesita almacenamiento, no está solicitando los datos de lucene directamente en cualquier momento. Puede que incluso no desee un índice (es posible que desee realmente FieldIndexing.Analyzed, y puede escaparse usando solo consultas dinámicas aquí)
Depende de usted.
Boris, La respuesta de Rob tiene el índice correcto, pero es un poco incómodo para consultar. Usted puede hacer eso usando:
session.Query<Movie, Movie_ByName>()
.Search(x=>x.Name, searchTerms)
.ToList()
que la voluntad
Eso va a ... ??? –
@RonnieOverby Y ese fue el momento en que fue comido por un oso. – ehdv
... trabajo. <- una suposición. –
Así es como me acheived un "AND" término de búsqueda.
En primer lugar, asegúrese de que su campo se indexa y se analizó:
public class MyIndex: AbstractIndexCreationTask<MyDocument>
{
public MyIndex()
{
Map = docs => from d in docs
select new { d.MyTextField };
Index(x => x.MyTextField, FieldIndexing.Analyzed);
}
}
después realizar una consulta desde el cliente:
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. Sunspot/Solr Búsqueda de texto completo: ¿cómo excluir ciertos campos de la búsqueda de texto completo?
- 2. Búsqueda de texto completo de SQL Server
- 3. Ranking de búsqueda de texto completo
- 4. Imprimación de búsqueda de texto completo?
- 5. mongodb estrategia de búsqueda de texto completo
- 6. ¿Microsoft Access tiene búsqueda de texto completo?
- 7. búsqueda de texto completo instalado o no
- 8. Búsqueda de texto completo como Google
- 9. Cassandra búsqueda de texto completo como
- 10. ¿Búsqueda de texto completo más rápido hoy?
- 11. Búsqueda de texto completo ignorando los comentarios
- 12. MySQL búsqueda de texto completo varias palabras
- 13. Django MySQL búsqueda de texto completo
- 14. Búsqueda de texto completo para Rails 3
- 15. búsqueda de texto completo en LINQ
- 16. Búsqueda de texto completo en SQL Azure
- 17. Búsqueda de texto completo: Whoosh Vs SOLR
- 18. Búsqueda de texto completo en CRM 2011
- 19. búsqueda rápida de texto completo en Windows Phone 7
- 20. búsqueda de subcadenas en RavenDB
- 21. Búsqueda de texto completo de MySQL Confusión de modo booleano
- 22. Índices de búsqueda de texto completo de SQLite
- 23. MySQL Resultado de búsqueda de texto completo Explicación
- 24. Catálogo de texto completo/búsqueda de índice% libro%
- 25. Búsqueda de texto completo de MySQL en Ruby on Rails
- 26. ¿Cómo funciona la búsqueda de texto completo de MySQL?
- 27. Búsqueda de texto completo de PostgreSQL y MySQL
- 28. Django completo orden de búsqueda de texto por relevancia
- 29. búsqueda de texto completo de mysql no devolviendo registros
- 30. Búsqueda de subcadena de texto completo en iOS
O searchTerm.Replace (" "" Y"), aunque tal vez es posible que desee desconfiar de las entradas vacías y todo eso. –
¿El mercado/texto de mercado sobra de una copia pegada por casualidad? –
Sí, utilicé la otra pregunta como un ejemplo –