如何在copyField工作上提出Solr建议?

时间:2014-06-10 19:42:09

标签: solr search-suggestion

我不知道为什么我的copyField不起作用。这是我的架构:

<field name="name" type="text_name" indexed="true" stored="true" multiValued="true"/>       

<copyfield source="name" dest="nameSuggest"/>
<field name="nameSuggest" type="textNamePhrase" stored="true" multiValued="true" indexed="true"/>

<fieldType class="solr.TextField" name="textNamePhrase" positionIncrementGap="100">
   <analyzer>         
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>  
   </analyzer>              
</fieldType>
<fieldType name="text_name" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />        
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.ApostropheFilterFactory"/>        
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />        
     <filter class="solr.ApostropheFilterFactory"/>  
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

我有建议设置在nameSuggest字段上做建议。如果我上传我的文档并保留copyField标记,则该建议不起作用(没有结果返回)。但是,如果我删除并上传两个字段的数据:name和nameSuggest(客户端复制这些字段),那么它的建议是有效的。

你能说出我的copyField有什么问题吗?如何知道是否填充了nameSuggest字段?我看不到它从我的查询中返回。

谢谢,

1 个答案:

答案 0 :(得分:0)

  1. 您的<field>元素应位于<fields>元素中。

  2. 关闭<copyfield>元素后放置<fields>元素。

  3. 类似的东西:

    <fields>
      <field name="name" type="text_name" indexed="true" stored="true" multiValued="true"/>       
      <field name="nameSuggest" type="textNamePhrase" stored="true" multiValued="true" indexed="true"/>
    </fields/>
    
    <copyfield source="name" dest="nameSuggest"/>
    

    要知道是否填充了索引字段,您可以使用Solr中的模式浏览器:

    http://localhost:8983/solr/#/[CORENAME]/schema-browser
    

    或查询术语组件

    http://localhost:8983/solr/[CORENAME]/terms?terms.fl=name&terms.regex=.*&terms.regex.flag=case_insensitive&wt=json&omitHeader=true