【发布时间】:2014-01-27 16:15:13
【问题描述】:
如何在 SOLR 中获取 SQL LIKE% 等字符串的值
例如我有这些字符串:
-
a- 0 个结果 -
as- 0 个结果 -
asd- 0 个结果 -
asdd- 15 个结果
如何在schema.xml中进行配置?
我尝试添加sortMissingLast="true",但还是不行。
【问题讨论】:
如何在 SOLR 中获取 SQL LIKE% 等字符串的值
例如我有这些字符串:
a - 0 个结果as - 0 个结果asd - 0 个结果asdd - 15 个结果如何在schema.xml中进行配置?
我尝试添加sortMissingLast="true",但还是不行。
【问题讨论】:
当你想从前面搜索时,一个字母一个字母的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>
这里有趣的属性是
asdd 成为第一个搜索以产生匹配,我建议使用4。更正式地说,这定义了单词/单词片段的最小大小。如果一个词小于这个值,它将不进入索引,因此不可搜索。【讨论】: