【问题标题】:Filter on solr splitting by list of strings按字符串列表过滤 solr 拆分
【发布时间】:2020-11-24 10:48:21
【问题描述】:

我的 Solr 实现中有这个 fieldType

<fieldType name="suggestion_text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
  <filter class="solr.WordDelimiterFilterFactory"
          generateWordParts="1"
          generateNumberParts="1"
          splitOnNumerics="1"
          preserveOriginal="1"
  />
  <filter class="solr.EdgeNGramFilterFactory" maxGramSize="100"/>
  <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

这几乎适用于我拥有的所有模型。例如对于型号 AB1234,我可以搜索 1234 并找到它。但是我想包含一个特殊案例,我正在尝试找到比当前更好的解决方案:

假设 AB 是制造商,1234 是实际零件编号,但在我的数据库中它们保存为 AB1234。我有一个 A0 制造商和 A01234 零件号,如果我搜索 1234,我不会找到它。

我找到了将 EdgeNGramFilterFactory 转换为 NGramFilterFactory 的解决方法,但这不是我想要的解决方案。我希望 Solr 能够搜索排除前两个字符(如果它们是字母+数字或在极端情况下),但我需要它使用 A0 和没有 A0 进行搜索。

我不知道我是否清楚。无论如何,我尝试使用正则表达式,创建一个新字段并在其上使用此过滤器:

<filter class="solr.PatternReplaceFilterFactory" pattern="(A0)" replacement="" replace="all" />

<filter class="solr.PatternReplaceFilterFactory" pattern="[a-zA-Z][0-9]" replacement="" replace="all" />

但这并没有给出预期的结果。

你能帮帮我吗?谢谢

【问题讨论】:

    标签: search solr wcs hcl


    【解决方案1】:

    请尝试以下字段类型来解决您的问题。

    <fieldType name="text_en_splitting_test" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
          <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" splitOnNumerics="1" preserveOriginal="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
          <analyzer type="query">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
        </fieldType>
    

    这适用于以下搜索词。

    1. AB1234
    2. AB
    3. 1234

    请找到带有搜索词的建议字段类型的 solr 分析页面的屏幕截图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2011-06-09
      • 2022-01-22
      • 1970-01-01
      • 2012-06-06
      • 2019-06-27
      • 1970-01-01
      相关资源
      最近更新 更多