2011-05-25 35 views
1

喂,Solr的情况下钝感

我'实施Solr中的自动完成功能,并有一个问题。

对于自动完成我使用

<fieldType name="text_auto" class="solr.TextField" sortMissingLast="true" omitNorms="true"> 
    <analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory" /> 
    </analyzer> 
</fieldType> 

我认为LowerCaseFilter应使令牌案例insensitiv但IST错了。实际上,只是将Token小写,意味着像“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> 

出于某种原因,它不字也。我的问题是为什么我能解决这个问题?

回答

1

Lucene的有,你可以使用(执行)三种方式的分析类:

  • SimpleAnalyzer:这所有的输入转换为小写。
  • StopAnalyzer:这将删除从搜索中删除噪音的单词。
  • StandardAnalyzer:这样做既可以上述过滤器进程,从而可以'清理'您的查询。

现在,来到你的问题,我会建议一个名为NGRAM techinque其将你的查询,然后搜索这些短语来代替。因此,即使存在拼写错误,您仍然可以获得出色的结果。

要知道如何做到这一点,我建议你阅读this让你开始。它还有其他关于查询的很好的信息。 这不仅会解决你的问题,但会增强你的应用程序。

玩得开心:D

+0

嘿,我发现了一个类似的帖子。看看它是否也有帮助:这是[链接](http://stackoverflow.com/questions/2487736/lucene-case-sensitive-insensitive-search):) – Augiwan 2011-05-28 12:52:09