Solr 6.6.0不区分大小写查询不起作用

时间:2017-11-13 18:17:45

标签: solr solr6 solr-query-syntax

Solr 6.6.0不区分大小写查询不起作用。 我曾尝试在互联网上提供所有其他选项/答案。

我累了,

<tokenizer class="solr.LowerCaseTokenizerFactory"/> 

但它不起作用。

我累了,

<filter class="solr.LowerCaseFilterFactory"/>

但它不起作用。

我已经厌倦了许多不同的方式,但都没有工作。

即我想用title_s搜索相同的结果:iPhone和title_s:iphone。

我不确定会导致什么问题。

2 个答案:

答案 0 :(得分:0)

如果不区分大小写的搜索在Solr版本中不起作用,那么除了一个堆栈溢出问题之外,您将获得更多噪声。

让我们用这个问题来说明每个人应该遵循基本Solr用法的方法:

1)请参阅文档 - Solr有一个很好的免费在线文档。    具体描述如何配置schema.xml及其各个方面[1]。 从那里你可以了解到将字段配置为不区分大小写非常简单:

<field name="title" type="text_case_insensitive" indexed="true" stored="true"/>

<fieldType name="text_case_insensitive" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
</fieldType>

N.B。如果您在标题字段的架构中有先前的配置,则需要重新编制索引

[1] https://lucene.apache.org/solr/guide/6_6/field-type-definitions-and-properties.html

答案 1 :(得分:0)

我曾尝试过许多不同的方式,但都没有工作。 比我实现如下,它工作正常。

让我知道下面的方法是否正确,但对我来说工作正常:)

我从架构中删除了以下代码,

<fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true"/>

并在代码下添加(替换)

<fieldType name="string" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>