列出"动物园" ravendb中的文档,每个文档都有一个建立年份的字段和一个描述字段。描述是一个字符串,除其他信息外,还包括可以在该动物园看到的许多动物。
(1)如何获取"黑猩猩和猩猩的用户搜索值OR"类人猿"不是狐猴"并搜索动物园以获取描述。
(2)如何对1920年10年内建立的所有动物园进行相同的搜索。
(3)如何进行以下近距离搜索:"黑猩猩猩猩" ~3 AND大象。
出于这个问题的目的,不要担心动物名称的单数或复数形式。假设他们将是复数。
编辑:我希望以下测试返回零结果,而是返回两个:
public void LuceneANDQuery()
{
var zoosToCreate = new List<Zoo>
{
new Zoo()
{
Description = "We have alligators, orangutans and chimpanzees",
AbbreviatedState = "DC"
},
new Zoo()
{Description = "We have orangutans and elephants", AbbreviatedState = "CA"}
};
using (var session = documentStore.OpenSession())
{
zoosToCreate.ForEach(session.Store);
session.SaveChanges();
new DescriptionIndex().Execute(documentStore);
string searchPhrase = @"lizards && orangutans";
var matchingZoos = session.Advanced.LuceneQuery<Zoo>("DescriptionIndex").Search("Description", searchPhrase).
WaitForNonStaleResultsAsOfNow().ToList();
int matchingZoosCount = matchingZoos.Count;
Assert.AreEqual(matchingZoosCount, 0);
}
}
public class DescriptionIndex : AbstractIndexCreationTask<Zoo>
{
public DescriptionIndex()
{
Map = zoos => from zoo in zoos
select new {zoo.Description};
Analyzers.Add(z => z.Description, "Lucene.Net.Analysis.Standard.StandardAnalyzer");
Indexes.Add(z => z.Description, FieldIndexing.Analyzed);
}
}
答案 0 :(得分:0)
的Balazs, 你可以简单地运行这个查询。 RavenDB在封面下使用Lucene,并向外暴露其查询。 这意味着您可以像这样运行查询。这是使用Session.Advanced.LuceneQuery在API中公开的。
需要注意的一点是,我们不支持默认字段,因此您需要指定您所指的字段,但这是关于它的。