我试图在SolR查询过程中使用通配符功能,我想在索引中找到所有包含fran*
文本的文档。
那么,为什么我的语法不工作?
查询详情
下面是我的JSON查询体请求
{
"params": {
"q": "fran*",
"rows":0,
"defType": "edismax",
}
}
字符串
我希望找到所有包含France关键字的文档。但它只找到FRANS / FRAN?项目,而不是任何包含France的项目。
如果我使用搜索查询France
(不使用wildcat)进行查询,它可以完美地工作。
索引详情
目标字段被索引为带有某些过滤器的文本字段
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/custom_stopwords_fr.txt" format="snowball" />
<filter class="solr.FrenchLightStemFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" />
</analyzer>
型
1条答案
按热度按时间slmsl1lt1#
ElisionFilterFactory
和FrenchLightStemFilterFactory
对词进行词干处理。因此,如果输入查询中的前缀与词干处理后的词不匹配,则它们不会匹配。您可以通过在完整术语和前缀术语之间添加和
OR
子句来解决这个问题。因此,新的JSON查询体应该是
字符串