SOLR案例不敏感搜索

Pra*_*tha 16 solr case-insensitive

我在SOLR搜索中遇到了问题.
我有这样的数据:
在此输入图像描述

我使用solr admin使用如下查询查找此数据:

address_s:*Nadi*
Run Code Online (Sandbox Code Playgroud)

并找到了那些数据.但是当我使用这个查询时:

address_s:*nadi*
Run Code Online (Sandbox Code Playgroud)

它没有找到任何东西.
我在Google上搜索,并找到了使用以下脚本创建字段的答案:

<fieldType name="c_text" 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>
Run Code Online (Sandbox Code Playgroud)

我将这些脚本复制粘贴到schema.xml中,但它仍然不起作用.我该怎么办?谁能帮我?

Jay*_*dra 12

address_s字段应定义为 -

<field name="address_s" type="c_text" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是默认的schema.xml,那么这个定义应该在之前 -

<dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
Run Code Online (Sandbox Code Playgroud)

它将其定义为字符串字段类型,不执行分析.

通配符查询不进行分析.
因此,如果您在索引时应用小写过滤器,查询address_s:*nadi*将起作用.
但是,查询address_s:*Nadi*不会,因为索引中Nadi不匹配nadi,您需要在客户端小写查询.

  • `但是,查询address_s:*Nadi*不会,因为Nadi不会在索引中匹配nadi - 但这不是在`<analyzer type ="query"/>`中使用`LowerCaseFilterFactory`这一点,所以*查询*会自动降低吗? (7认同)
  • 我按照你的指示,但仍然无法正常工作.我将`<field name ="address_s"type ="c_text"indexed ="true"stored ="true"/>`粘贴到schema.xml,然后重新运行`java -jar start.jar`并尝试查询.对不起,我想问一下,我在..\solr_302\example\solr\conf中使用了schema.xml,是吗,是吗? (2认同)

Jef*_*aes 7

我用它作为字段类型:

<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>
Run Code Online (Sandbox Code Playgroud)

并定义了我的字段:

<field name="address" type="string" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)

结果:我的文档返回右侧的字段(如插入),我可以搜索不区分大小写(使用大写和小写字母)...

版本:Solr 3.6


jpo*_*ntz 5

您的address_s字段是否c_text在schema.xml中使用此字段类型?

如果已使用先前配置创建索引,则需要重新索引所有内容以将更改考虑在内.

  • 然后,您需要为已添加到索引的所有文档重新运行这些命令.索引中数据的表示取决于已使用的分析器.因此,如果更新用于建立索引的分析器,则需要重新索引所有文档. (3认同)
  • 要使其工作,您唯一需要做的就是将所有文档重新插入索引. (2认同)