2
獲取ravendb中的「動物園」文檔列表,每個文檔都有一個用於建立年份的字段和一個用於描述的字段。描述是一個字符串,除了其他信息外,還將包括許多可以在動物園中看到的動物。使用ravendb/lucene進行自然語言查詢
(1)如何獲取「黑猩猩和猩猩」或「非狐猴」的用戶搜索值以及搜索動物園的描述。
(2)如何能我做同樣的搜索,但在10年內的1920
建立所有動物園(3)我怎樣才能做到以下幾點鄰近搜索:「黑猩猩猩猩」〜3和大象。
爲了這個問題的目的,不要擔心單數或複數形式的動物名稱。假設他們將是複數。
編輯:我希望下面的測試返回零分的結果,而是返回兩個:
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);
}
}
除了我不能完全得到它的工作。請參閱我上面的測試。我希望它返回零結果,而它會返回兩個動物園。 – balazs
Per Oren在其他地方的回覆: 這不是AND搜索。這是: string searchPhrase = @「描述:lizards AND描述:orangutans」; var matchingZoos = session.Advanced.LuceneQuery(「DescriptionIndex」)。其中(searchPhrase)。 –
balazs