java – solr StandardTokenizer:如何用通配符处理下划线?

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

在我的索引中有许多带有下划线名称的文件(例如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"/>

最佳答案 那么,更多的研究已经解决了这个问题:

基本问题是Solr不对通配符查询应用文本分析.

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

点赞