solr 允许部分关键字(& A)

7dl7o3gd  于 6个月前  发布在  Solr
关注(0)|答案(1)|浏览(69)

我试图在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>

slmsl1lt

slmsl1lt1#

ElisionFilterFactoryFrenchLightStemFilterFactory对词进行词干处理。因此,如果输入查询中的前缀与词干处理后的词不匹配,则它们不会匹配。
您可以通过在完整术语和前缀术语之间添加和OR子句来解决这个问题。
因此,新的JSON查询体应该是

{
  "params": {
    "q": "fran OR fran*",
    "rows":0,
    "defType": "edismax",
  }
}

字符串

相关问题