抱歉新问题,我是索尔的新手。在托管模式中,我看到有许多字段具有相同的类型但名称不同。 Solr如何识别哪个字段存储令牌,因为类型都是相同但只有名称不同?例如,
<field name="content_type" type="text_general">
<field name="content_type_hint" type="text_general">
<field name="blitz" type="text_general">
它们都具有相同的类型(相同的分析仪)。 Solr如何将不同的内容存储到所有这些text_general字段中?他们是否用实际内容检查标签的名称?如果不相同,它会移动到动态字段?我在网上搜索过,似乎没有人详细提到名称是否有助于编制索引。
答案 0 :(得分:1)
所以名字和类型是两回事。
<field name="content_type" type="text_general">
在上面的例子中,字段的名称是&#34; content_type&#34;这将用于搜索它。
例如,如果您想使用content_type =&#34; xml&#34;搜索docuemnt,您将查询类似这样的内容
Q = CONTENT_TYPE:XML
但是,type定义了在索引文档或将查询发送到索引时在字段上发生的分析。
因此,在模式中的某个位置,您将定义类型为text_general的字段类型。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
您可以在此处阅读更多相关信息 https://lucene.apache.org/solr/guide/6_6/field-type-definitions-and-properties.html
Solr不会将所有内容存储到类型字段中。 type field只是告诉它在索引或查询时在字段上运行什么分析。 每个字段都有自己的索引。
编辑: 我认为您对数据的索引方式感到困惑。让我们举个例子。
假设我有一个这样的文件
{
"content_type" : "text/html", "content_type_hint" : "some_hint", "blitz" : "some_text"
}
因此,当您索引文档时,您将告诉solr您要将哪个字段放入什么值。
所以在这种情况下,您说字段content_type
的值为"text/html"
而blitz
的值为"some_text"
。
然后solr将根据该字段的类型进行一些分析,然后将其放入相应的索引。