【问题标题】:solr StandardTokenizer: how is underscore processed with wildcards?solr StandardTokenizer:如何使用通配符处理下划线?
【发布时间】:2016-05-27 05:55:53
【问题描述】:

所以,我有一个 Solr 实例,它使用 StandardTokenizer(以及 ClassicFilterfactoryLowercaseFilterFactoryStopfilterfactory)处理输入和查询。

在我的索引中有一些文件名用下划线分隔(例如some_indexed_file.jpg)。

我注意到,如果我查询some_indexed_file.jpg,我会正确返回我要查找的文件。

但是,如果我另外搜索some_indexed_file.jp*(带有星号,我假设它充当通配符),据我的理解应该会产生类似的结果,我不会得到任何结果。

知道发生了什么:我想我对 solr 处理查询的方式有误解?

编辑:根据要求,这里是架构 XML 配置条目:

    <fieldType name="default" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.ClassicFilterFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.StopFilterFactory" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.ClassicFilterFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.StopFilterFactory" />
        </analyzer>
    </fieldType>



   <field name="filename" type="default" multiValued="true" omitNorms="false" termVectors="false"/>

【问题讨论】:

  • 您能否将以下内容添加到您的问题中:schema.xml 的摘录以及您在示例中存储和/或搜索文件名的字段的 定义?

标签: java solr


【解决方案1】:

好吧,更多的研究已经解决了这个问题: 基本问题是 Solr 不将文本分析应用于通配符查询。

这意味着它正在搜索与some_indexed_file.jp* 完全匹配的内容。但是,当文件名被索引时,它被标记为“一些”“索引”和file.jpg,这与这个搜索词不匹配。
搜索 some_indexed_file.jpg 被正确标记,因此返回正确的结果。

【讨论】:

  • 这里有同样的问题。你怎么修好它的? :(
  • 我实际上还没有修复它。我们能想到的最简单的方法是预处理查询以删除下划线。不过,这有点麻烦。
  • 找到更好的解决方案了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 2016-07-21
相关资源
最近更新 更多