我正在尝试Solr 4.10中的示例数据库,而不了解dynamicFields
的工作原理。架构定义
dynamicField name="*_s" type="string" indexed="true" stored="true"
如果我添加一个带有新字段名称的新项目(比如JSON格式的"example_s":"goober"
),那么像
?q=goober
返回没有匹配项,而
?q=example_s:goober
会找到匹配。我错过了什么?
答案 0 :(得分:0)
我希望看到您用来执行上述查询的solrconfig.xml文件中的SearchHandler。
在SearchHandler中,我们通常有默认查询字段,即qf参数。
检查您的动态字段 example_s 是否存在于solrconfig文件的查询字段列表中,否则您可以在向搜索处理程序发送查询时将其传递。
希望这有助于您解决问题。
答案 1 :(得分:0)
如果您使用的是默认架构,请参阅以下内容:
<copyField source="*_s" dest="text"/>
,然后您的所有* _s动态字段也可以搜索。但请注意,搜索分析器不是* _s定义的那些,而是for the text field's definition,它不是字符串,而是text_general,在文件的其他地方定义。对于Solr vs. ElasticSearch,他们都在魔法的不同方面犯错。 Solr使您可以配置系统,并且可以非常轻松地查看当前的确切配置。 ElasticSearch会隐藏所有配置,但您必须重新发现它想要更改的默认行为。最后,结果可能类似,并在中间某处遇到。