所以,我有一个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"/>
答案 0 :(得分:2)
嗯,更多的研究已经解决了这个问题: 基本问题是Solr不对通配符查询应用文本分析。
这意味着它正在搜索与some_indexed_file.jp*
完全匹配的内容。但是,当文件名被索引时,它被标记为“some”“indexed”和file.jpg
,这与此搜索词不匹配。
搜索some_indexed_file.jpg
正在被正确标记,因此返回正确的结果。