问题描述
|
哈o
我正在Solr中实现自动完成功能,并且遇到一个问题。
对于自动完成,我正在使用
<fieldType name=\"text_auto\" class=\"solr.TextField\" sortMissingLast=\"true\" omitNorms=\"true\">
<analyzer>
<tokenizer class=\"solr.KeywordTokenizerFactory\"/>
<filter class=\"solr.LowerCaseFilterFactory\" />
</analyzer>
</fieldType>
我认为LowerCaseFilter应该使令牌大小写不敏感,但这是错误的。实际上,令牌只使用小写形式,这意味着类似\“ comput \”的查询将导致\“ computer \”,而\“ Comput \”则不会。
实际上,我想将Comput和Comput引入计算机。
我已经尝试过了:
<fieldType name=\"text_auto_low\" class=\"solr.TextField\" sortMissingLast=\"true\" omitNorms=\"true\">
<analyzer>
<tokenizer class=\"solr.KeywordTokenizerFactory\"/>
<filter class=\"solr.LowerCaseFilterFactory\" />
</analyzer>
</fieldType>
<fieldType name=\"text_auto_up\" class=\"solr.TextField\" sortMissingLast=\"true\" omitNorms=\"true\">
<analyzer>
<tokenizer class=\"solr.KeywordTokenizerFactory\"/>
</analyzer>
</fieldType>
由于某种原因,它也不说话。我的问题是为什么,我该如何解决?
解决方法
Lucene具有Analyzer类,您可以通过三种方式使用(实现):
SimpleAnalyzer:这会将所有输入转换为小写。
StopAnalyzer:这将删除可消除搜索噪音的单词。
StandardAnalyzer:这同时完成了上述过滤过程,因此可以“清理”您的查询。
现在,提出您的问题,我将推荐一个称为ngram的技术,该技术可以拆分您的查询,然后搜索这些短语。因此,即使有错别字,您仍然可以获得出色的结果。
要知道该怎么做,我建议您阅读此书以开始使用。它还具有有关查询的其他重要信息。
这不仅可以解决您的问题,而且可以增强您的应用程序。
玩得开心:D