Facet +查询文本以获得自动完成功能

时间:2011-03-21 10:51:56

标签: text autocomplete solr facet autosuggest

我想在我的应用程序中获得一个自动建议/自动完成字段,并且我能够在字符串字段上获得该字段,但是在字符串字段上的字面或查询不是“正常”的文本字段,特别是间隔的单词。

现在我的请求是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文档并使用关键字文本字段值的字符串字段重新创建新的...我只是不喜欢这个主意。

此致

亚历

1 个答案:

答案 0 :(得分:0)

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