5

所以,我有一个 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"/>
4

1 回答 1

2

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

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

于 2012-11-19T11:22:48.693 回答