【问题标题】:Tokenizer with lower case filter not working带有小写过滤器的标记器不起作用
【发布时间】:2020-04-08 19:26:00
【问题描述】:
<fieldType name="keyword" class="solr.TextField">
    <analyzer> 
      <tokenizer class="solr.KeywordTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>  
</fieldType>

归档定义:

<field name="name" type="keyword" indexed="true" stored="true"/>

我有一个数据,上面字段的值为APPLE-INC

我希望当我执行apple-inc 时会搜索到这个。它没有发生。

有什么想法吗?

【问题讨论】:

  • 你是如何使用 solr 的?你在云模式下使用它吗?您是否通过选择字段在 solr 分析页面上进行了相同的检查?
  • 这是一个运行在windows机器上的独立服务器。
  • 访问 solr 分析页面并检查数据是如何被索引的,查询是如何进行的。修改 schema.xml 后 ...您是重新启动服务器还是重新索引数据?
  • 您在更改字段后重新索引了吗?您是如何针对该字段进行搜索的?
  • 谢谢。我添加了查询值和索引值。索引分析看起来没有转换为小写。为什么会这样?

标签: solr lucene


【解决方案1】:

我在架构文件中添加了以下字段类型。

<fieldType name="keyword" class="solr.TextField">
    <analyzer> 
      <tokenizer class="solr.KeywordTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>  
   </fieldType>

这是分析页面上的输出。 请参考截图。

【讨论】:

  • 我的错。正如你所说,它应该工作。虽然我的架构文件是小写的,但它没有上传,我正在检查。
  • 我明白了。我正在使用我的配置文件所在的目录。 solr.cmd create -c search -d。该文件已过时。我了解重新索引意味着重新插入数据。是这样吗?
  • yes...重新索引意味着重新插入或再次推送数据...以便根据修改后的 schema.xml 创建新的索引
  • 数据量大的时候操作成本真的很高:(如果数据是动态生成的,怎么重新插入呢?
  • 如果您希望更改或添加类型,则不应将 Solr 中的数据作为主要数据存储。在这些情况下,您需要重新编制索引,即从外部来源再次发送数据。如果存储了所有字段,您实际上可以通过让 Solr 重新提交它来重新索引它,但我不确定是否有任何内置支持(除了进行不影响任何的小原子更新之外)真实字段)。
猜你喜欢
  • 1970-01-01
  • 2019-07-04
  • 2015-08-01
  • 1970-01-01
  • 2020-01-17
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多