Bor*_*nko 10 search full-text-search ravendb
您能否告诉我如何在RavenDb中执行简单的全文搜索.数据库存储文件:Movie {Name ="Pirates of the Carribean"}.我希望在搜索短语"Pirates Carribean"或任何其他单词组合中找到此文档.
Aye*_*ien 16
鲍里斯,罗布的答案有正确的索引,但查询有点尴尬.你可以这样做:
session.Query<Movie, Movie_ByName>()
.Search(x=>x.Name, searchTerms)
.ToList()
Run Code Online (Sandbox Code Playgroud)
那会的
Rob*_*ton 12
你担心的是与全文无关 - 默认情况下,Lucene在OR的基础上工作,你想要的是一个AND
如果我是你,我会这样做
String[] terms = searchTerm.Split(" "); // Or whatever the string.split method is
Run Code Online (Sandbox Code Playgroud)
和
.Where("Name:(" + String.Join(" AND ", terms) + ")");
Run Code Online (Sandbox Code Playgroud)
你的索引看起来应该是这样的
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);
}
Run Code Online (Sandbox Code Playgroud)
您不需要存储,您不会直接从lucene请求数据.你可能甚至不想要一个索引(你可能真的想要FieldIndexing.Analyzed,并且可能只是在这里使用动态查询)
尽管如此.
| 归档时间: |
|
| 查看次数: |
7230 次 |
| 最近记录: |