SolR 和通配符。允许部分关键字

问题描述 投票:0回答:1

我正在尝试在 SolR 查询过程中使用 通配符功能 我想在我的索引中找到包含

fran*
文本的所有文档。

那么,为什么我的通配符语法不起作用?

查询详情

这是我的 JSON 查询正文请求

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

我希望找到包含 France 关键字的所有文档。但它只找到 FRANS / FRAN?物品,不是任何包含法国的物品。

如果我使用搜索查询

France
(没有野猫)进行查询,它会完美运行。

索引详情

目标字段被索引为带有一些过滤器的文本字段

<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>
solr lucene solrj
1个回答
0
投票

ElisionFilterFactory
FrenchLightStemFilterFactory
是这些术语的词干。因此,如果输入查询中的前缀与词干术语不匹配,它们将不匹配。

您可以通过在完整术语和前缀术语之间添加 和

OR
子句来解决这个问题。

所以你的新 JSON 查询正文应该是

{
  "params": {
    "q": "fran OR fran*",
    "rows":0,
    "defType": "edismax",
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.