即使存储了 x,选择子句中也未定义名称 x
Undefined name x in selection clause even when x is stored
我正在使用颜色描述字段中的颜色同义词创建一个复制的字段,这很有效。我可以像这样使用我复制的字段进行搜索
/solr/my_keyspace.my_table/select?q=color_base:white
但是该字段没有显示在搜索结果中,如果我像这样将字段添加到字段列表中
/solr/my_keyspace.my_table/select?q=color_base:white&fl=color_base
我收到错误
Undefined name color_base in selection clause
这是我的架构 - 我认为 stored="true" 可以解决问题,但事实并非如此。我只想在搜索结果中看到字段color_base。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="autoSolrSchema" version="1.5">
<types>
<fieldType class="org.apache.solr.schema.TextField" name="ColorField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="color_synonyms.txt" tokenizerFactory="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>
<fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
</types>
<fields>
<field indexed="true" multiValued="false" name="color_description" stored="true" type="StrField" docValues="true"/>
<field indexed="true" multiValued="true" name="color_base" stored="true" type="ColorField" docValues="true"/>
<copyField source="color_description" dest="color_base"/>
</fields>
<uniqueKey>(year, make, base_model)</uniqueKey>
</schema>
这似乎是 DSE 中的一个问题。但是,如果您只想返回 color_base,您可以通过要求返回 color_description 来获得完全相同的结果:
/solr/my_keyspace.my_table/select?q=color_base:white&fl=color_description
即使color_description和color_base是不同的类型,存储的值是发送给Solr的原始值,而不是分析后的结果,所以你通过请求得到相同的数据任何一位。
编辑:关于你的评论......你应该能够对分析值进行分面:
/select?q=your query&facet=true&facet.field=color_base
但我现在无法对此进行测试,我的 DSE 架构中没有任何 copyField,请尝试并希望您不会遇到与 fl 类似的问题...
我发现我无法使用分析器添加搜索结果,而这正是我的目标。分析器只是为了提高搜索能力,结果不能被 Solr 修改。我必须向底层数据库 (Cassandra) 添加一个新字段并将我想要的值映射到其中。经验教训 - Solr 仅用于搜索,而不用于 changing/updating/appending 结果集。
我正在使用颜色描述字段中的颜色同义词创建一个复制的字段,这很有效。我可以像这样使用我复制的字段进行搜索
/solr/my_keyspace.my_table/select?q=color_base:white
但是该字段没有显示在搜索结果中,如果我像这样将字段添加到字段列表中
/solr/my_keyspace.my_table/select?q=color_base:white&fl=color_base
我收到错误
Undefined name color_base in selection clause
这是我的架构 - 我认为 stored="true" 可以解决问题,但事实并非如此。我只想在搜索结果中看到字段color_base。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="autoSolrSchema" version="1.5">
<types>
<fieldType class="org.apache.solr.schema.TextField" name="ColorField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="color_synonyms.txt" tokenizerFactory="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>
<fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
</types>
<fields>
<field indexed="true" multiValued="false" name="color_description" stored="true" type="StrField" docValues="true"/>
<field indexed="true" multiValued="true" name="color_base" stored="true" type="ColorField" docValues="true"/>
<copyField source="color_description" dest="color_base"/>
</fields>
<uniqueKey>(year, make, base_model)</uniqueKey>
</schema>
这似乎是 DSE 中的一个问题。但是,如果您只想返回 color_base,您可以通过要求返回 color_description 来获得完全相同的结果:
/solr/my_keyspace.my_table/select?q=color_base:white&fl=color_description
即使color_description和color_base是不同的类型,存储的值是发送给Solr的原始值,而不是分析后的结果,所以你通过请求得到相同的数据任何一位。
编辑:关于你的评论......你应该能够对分析值进行分面:
/select?q=your query&facet=true&facet.field=color_base
但我现在无法对此进行测试,我的 DSE 架构中没有任何 copyField,请尝试并希望您不会遇到与 fl 类似的问题...
我发现我无法使用分析器添加搜索结果,而这正是我的目标。分析器只是为了提高搜索能力,结果不能被 Solr 修改。我必须向底层数据库 (Cassandra) 添加一个新字段并将我想要的值映射到其中。经验教训 - Solr 仅用于搜索,而不用于 changing/updating/appending 结果集。