获取 ravendb 中的“动物园”文档列表,每个文档都有一个字段用于建立年份和一个字段用于描述。描述是一个字符串,除其他信息外,还包括该动物园可以看到的许多动物。
(1) 如何获取“黑猩猩和猩猩或“大猿”而不是狐猴的用户搜索值并在动物园中搜索描述。
(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);
}
}