0

我想在我的应用程序中获得一个自动建议/自动完成字段,并且我可以在字符串字段上获得它,但是分面或查询在文本字段上不像在字符串字段上那样“工作”,特别是间隔词。

现在我的要求是q=cleared_keywords:piso\%20e*&facet=on&facet.field=cleared_keywords&facet.sort=result_count&facet.mincount=1&version=2.2&start=0&rows=0&indent=on&facet.limit=10

我的架构是:

 <fields>
   <field name="id" type="integer" indexed="true" stored="true" required="true"/> 
   <field name="country" type="string" indexed="true" stored="true" required="true"/> 
   <field name="city_id" type="integer" indexed="true" stored="true" required="false"/>
   <field name="ad_type" type="integer" indexed="true" stored="true" required="true"/>
   <field name="keywords" type="text" indexed="true" stored="true" required="true"/>
   <field name="result_count" type="sint" indexed="true" stored="true" required="true"/>
   <field name="hash" type="integer" indexed="true" stored="true" required="true"/>
   <field name="cleared_keywords" type="string" indexed="true" stored="true" required="false"/>
   <field name="keywords_score" type="sfloat" indexed="true" stored="true" required="true"/>
   <field name="sorted_keywords" type="string" indexed="true" stored="true" required="true"/>
   <field name="links_to" type="integer" indexed="true" stored="true" multiValued="true"/>
   <field name="keywordsAsSuggestion" type="string" indexed="true" stored="true" />
   <dynamicField name="random*" type="rand" indexed="true" stored="true"/>
   <copyField source="keywords" dest="keywordsAsSuggestion" />
 </fields>

如果我在文本(关键字)字段上尝试相同的查询,则由于文本而无法正常工作。我不明白 copyField 是如何工作的,我需要重新加载/重新创建索引吗?

我想跳过“重新创建索引”步骤,但如果我不能,我将加载所有 Solr 文档并使用带有关键字文本字段值的字符串字段重新创建新文档……我只是不喜欢这个想法.

问候,

亚历克西斯

4

1 回答 1

0

为字段类型文本定义的分析器和标记器与默认 schema.xml 中的字符串不同。如果您想尝试为自动建议提供短语,那么最好使用必要的分析器和标记器定义您自己的字段类型。提供了有关它们的详细信息。

于 2011-03-21T18:23:44.493 回答