【问题标题】:How to make Solr suggestion on copyField work?如何在 copyField 上提出 Solr 建议?
【发布时间】:2019-03-07 13:05:04
【问题描述】:

我不知道为什么我的 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 字段是否已填充?我看不到它从我的查询中返回。

谢谢,

【问题讨论】:

  • &lt;copyfield.. 完全小写。也许这就是问题所在?您能否检查它是否适用于&lt;copyField,如SchemaXml documentation 中所述?

标签: solr search-suggestion


【解决方案1】:
  1. 您的&lt;field&gt; 元素应位于&lt;fields&gt; 元素内。

  2. 在关闭&lt;fields&gt; 元素之后放置&lt;copyfield&gt; 元素。

类似:

<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

或查询terms组件

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

【讨论】:

  • 我试过了,还是不行。我的客户正在使用二进制文件上传文档,这可能是个问题吗?
猜你喜欢
  • 2011-06-03
  • 2018-04-05
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多