2012-06-25 31 views
2

我新来solr,所以我真的需要有人来帮助我理解下面的字段。如果存储= false,indexed = false,那么该字段的含义是什么?看下面的两个例子,有什么区别?如果该字段没有存储,它有什么用...Solr schema.xml字段混淆

<field name="test1" type="text" indexed="false" 
     stored="false" required="false" /> 

这个怎么样?

<field name="test2" type="text" indexed="false" 
     stored="false" required="false" multiValued="true" /> 

非常感谢!

+1

如果没有存储,那么你不能得到(索引)该字段在结果集中的值(例如,显示给用户,如书名)。如果它没有索引,那么你不能搜索它。不知道有一个点,有他们两个假的(也许如果一些领域是在copyField使用,存储/索引)? – nickdos

+0

nickdos,我怀疑这是否需要,所以我发布了这个问题:)。感谢您的帮助〜 – trillions

+0

正如其他海报所提到的,这些信息很容易在SOLR网站上找到 - 您正在引入负面评级 - 正如SO所定义的那样:“这个问题没有显示任何研究工作;它不清楚或没有用” – nickdos

回答

8

这是很容易,它似乎是:

  • indexed:你可以在上面搜索
  • stored:你能证明它在您的搜索结果

事实上,有可能是字段你不用于搜索,但你只是想在结果中显示它们。另一方面,可能有些字段需要在结果中显示,但您不想用于搜索。当您不需要显示某个字段时,stored=false非常重要,因为它可以提高性能。如果你将所有的字段存储起来,并且你有很多字段,Solr可能会变慢,返回结果。

当然,假两个都没有多大意义,因为这个领域完全没用。

独特的差的两个领域之间是multiValued=true,这意味着第二字段可以包含多个值。这意味着该字段的内容不仅仅是一个文本条目,而是一个文本条目列表。

+0

非常感谢,javanna!你的解释现在对我很有意义。前一个开发者没有留下任何文档,我对这个新手很陌生,所以我不得不问这里的专家,以了解为什么他甚至为schema.xml中的同一个字段出现stored = false和index = false。显然,这似乎并不需要,我可以简单地将其删除。我认为如果在模式文件中没有提到某个字段,它将基本上被忽略,不需要做这个类似错误的事情来忽略字段...非常感谢您帮助我并引导我:) – trillions

+0

您'欢迎光临!还有一件事。如果你使用动态字段,你应该在你的'schema.xml'中检查,因为这可能会让事情有点不同。 – javanna

+0

谢谢javanna!这是非常有用的:)只是为了确认,这是否意味着如果字段定义与动态字段匹配,那么在原始字段本身中不需要定义索引和存储,因为动态字段会这样做? – trillions

8

如果你想有一个领域是搜索,那么你应该编入索引的属性设置为true,您可以找到Solr wiki.

最好的解释。

indexed = true:如果此字段应为“索引”,则为true。如果(且仅当)字段被索引,则它是可搜索的,可排序的和可面向的。

如果您想要在搜索结果中检索字段,则应该将stored属性设置为true。如果此字段的值应搜索

期间可检索如果你想存储在一个领域多个值,那么你应该多值字段设置为true:

存储=真

多值= TRUE:如果该字段可以包含每个文档的多个值,也就是说,如果它可以在文档中出现多次

+1

非常感谢,parvin! :) – trillions