2014-01-27 51 views
0

如何获得SOLR的字符串值,就像SQL LIKE%SOLR schema.xml中的字符串字段LIKE%

例如,我有这些字符串:

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

如何在schema.xml中配置?

我试图添加sortMissingLast="true"但它仍然无法正常工作。

回答

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。更正式地说,这定义了单词/单词片段的最小尺寸。如果一个单词小于这个值,它将而不是使它成为索引,因此不可搜索。
  • maxGramSize - 每个单词将放置在索引中的最大值为最大值; 10只是一个最好的选择;这取决于您的文字中的单词的长度和/或您的用户的搜索输入的长度是多长时间