使用RavenDB和lucene搜索字符串数组中的每个元素以查找多个术语

时间:2014-12-10 15:22:51

标签: c# lucene ravendb

我有(尤其)我的RavenDB中的以下对象:

Object1

{
  "Texts" : [ "one two", "three four" ]
}

Object2

{
  "Texts" : [ "one three", "two four" ]
}

我想查找Texts中字符串包含onetwo两个字词的所有对象。

如果我索引字段

from doc in docs.Objects select new { Texts }

并使用StandardAnalyzer进行分析,当我只需要Object1时,以下查询将同时返回Object2Object1

Texts:(one AND two)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您的要求并非真正兼容。 这份文件怎么样?

{
  "Texts" : [ "two one", "three four" ]
}

您是否希望在搜索one AND two时找到它?

如果没有,只需进行短语搜索,如果是的话,你可以在不使用扇出的情况下真正做到你想做的事。

答案 1 :(得分:1)

如果您需要这样,您可以:

from doc in docs
from text in doc.Tests
select new { Text = text }

请注意,这是一个扇出索引,如果每个文档有大量文本,则需要注意所需的资源。