【问题标题】:SOLR schema.xml for string field LIKE%SOLR schema.xml 用于字符串字段 LIKE%
【发布时间】:2014-01-27 16:15:13
【问题描述】:

如何在 SOLR 中获取 SQL LIKE% 等字符串的值

例如我有这些字符串:

  • a - 0 个结果
  • as - 0 个结果
  • asd - 0 个结果
  • asdd - 15 个结果

如何在schema.xml中进行配置?

我尝试添加sortMissingLast="true",但还是不行。

【问题讨论】:

    标签: java search solr


    【解决方案1】:

    当你想从前面搜索时,一个字母一个字母的a Edge N-Gram Tokenizer 会做你想做的事。为了减小索引大小,我还会在分析器中添加 a Lower Case Filter

    您将需要一个自定义的fieldType - 见下文 - 然后您需要在您选择的文档字段中使用它。

    <fieldType name="my_sql_like" class="solr.TextField">
      <analyzer>
        <tokenizer class="solr.EdgeNGramTokenizerFactory"
                   minGramSize="4" maxGramSize="10"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    

    这里有趣的属性是

    • minGramSize - 用户输入至少需要多少个字符才能进行匹配;由于您希望asdd 成为第一个搜索以产生匹配,我建议使用4。更正式地说,这定义了单词/单词片段的最小大小。如果一个词小于这个值,它将进入索引,因此不可搜索。
    • ma​​xGramSize - 每个单词有多少会被放入索引中,最大值; 10 只是最好的选择;这取决于文本中的单词有多长和/或用户的搜索输入有多长

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      相关资源
      最近更新 更多