Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java solr StandardTokenizer:如何使用通配符处理下划线?_Java_Solr - Fatal编程技术网

Java solr StandardTokenizer:如何使用通配符处理下划线?

Java solr StandardTokenizer:如何使用通配符处理下划线?,java,solr,Java,Solr,因此,我有一个Solr实例,它使用标准标记器(以及ClassicFilterfactory、LowercaseCFilterFactory和Stopfilterfactory)处理输入和查询 在我的索引中,有许多文件的名称以下划线分隔(例如,some\u index\u file.jpg) 我注意到,如果我查询某个索引文件.jpg,我会得到正确返回的文件 然而,如果我选择搜索某个索引文件.jp*,(带星号,我认为它是一个通配符),根据我的理解应该会产生类似的结果,我不会得到任何结果 知道发生了什

因此,我有一个Solr实例,它使用
标准标记器
(以及
ClassicFilterfactory
LowercaseCFilterFactory
Stopfilterfactory
)处理输入和查询

在我的索引中,有许多文件的名称以下划线分隔(例如,
some\u index\u file.jpg

我注意到,如果我查询
某个索引文件.jpg
,我会得到正确返回的文件

然而,如果我选择搜索
某个索引文件.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不将文本分析应用于通配符查询

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

搜索
一些索引文件.jpg
被正确标记,因此返回了正确的结果。

请您在问题中添加以下内容:schema.xml的摘录以及您在示例中存储和/或搜索文件名的字段的定义?这里也有同样的问题。你是怎么修好的(实际上我还没有修复它。我们能想到的最简单的方法是预处理查询以删除下划线。不过,这有点像个预兆。有没有找到更好的解决方案?