Solr 中的 CopyField 似乎不起作用
CopyField in Solr Doesnt Seem to Work
我正在尝试使用 Solr 中的 copyField 指令将一些字段复制到一个包罗万象的字段中以供搜索。不幸的是,该字段似乎根本没有通过 copyField 指令填充。
这是我的源字段:
<field name="firstName" type="text_general" indexed="true" stored="true" required="false" />
<field name="lastName" type="text_general" indexed="true" stored="true" required="false" />
<field name="postCode" type="text_general" indexed="true" stored="true" required="false" />
<field name="emailAddress" type="text_general" indexed="true" stored="true" required="false" />
<!-- suggest field -->
<field name="name_Search" type="textSuggest" indexed="true" stored="true" multiValued="true" />
这是我的 copyField 指令:
<!-- copy fields -->
<copyfield source="firstName" dest="name_Search" />
<copyfield source="lastName" dest="name_Search" />
<copyfield source="emailAddress" dest="name_Search" />
<copyfield source="postCode" dest="name_Search" />
现在 运行 对 "name_Search" 字段的查询不会产生任何结果,并且该字段不会出现在模式浏览器中。
我是否需要做任何其他事情才能使 copyField 正常工作?我是运行 Solr v5.2.1.
编辑
这里是用于 catch-all 字段的 textSuggest 字段类型:
<fieldType class="solr.TextField" name="textSuggest" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
在 SolrConfig.xml 中,配置建议处理程序如下:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">default</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">name_Search</str>
<str name="suggestAnalyzerFieldType">textSuggest</str>
<str name="buildOnStartup">true</str>
<str name="buildOnCommit">true</str>
</lst>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy" >
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
我知道建议处理程序有效,就像我明确填写 'name_Search' 字段一样,然后我可以获得预期的结果。
在您的过滤器中,使用 copyField
而不是 copyfield
(大写 F)。
我正在尝试使用 Solr 中的 copyField 指令将一些字段复制到一个包罗万象的字段中以供搜索。不幸的是,该字段似乎根本没有通过 copyField 指令填充。
这是我的源字段:
<field name="firstName" type="text_general" indexed="true" stored="true" required="false" />
<field name="lastName" type="text_general" indexed="true" stored="true" required="false" />
<field name="postCode" type="text_general" indexed="true" stored="true" required="false" />
<field name="emailAddress" type="text_general" indexed="true" stored="true" required="false" />
<!-- suggest field -->
<field name="name_Search" type="textSuggest" indexed="true" stored="true" multiValued="true" />
这是我的 copyField 指令:
<!-- copy fields -->
<copyfield source="firstName" dest="name_Search" />
<copyfield source="lastName" dest="name_Search" />
<copyfield source="emailAddress" dest="name_Search" />
<copyfield source="postCode" dest="name_Search" />
现在 运行 对 "name_Search" 字段的查询不会产生任何结果,并且该字段不会出现在模式浏览器中。
我是否需要做任何其他事情才能使 copyField 正常工作?我是运行 Solr v5.2.1.
编辑
这里是用于 catch-all 字段的 textSuggest 字段类型:
<fieldType class="solr.TextField" name="textSuggest" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
在 SolrConfig.xml 中,配置建议处理程序如下:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">default</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">name_Search</str>
<str name="suggestAnalyzerFieldType">textSuggest</str>
<str name="buildOnStartup">true</str>
<str name="buildOnCommit">true</str>
</lst>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy" >
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
我知道建议处理程序有效,就像我明确填写 'name_Search' 字段一样,然后我可以获得预期的结果。
在您的过滤器中,使用 copyField
而不是 copyfield
(大写 F)。