2011-04-01 64 views

回答

13

最简单的方法是降低所有可搜索的内容以及查询。请参阅LowerCaseFilter文档。您还可以使用Wildcard查询进行不区分大小写的搜索,因为它绕过Analyzer

如果您喜欢,您可以将内容存储在不同的字段中以捕获不同的案例配置。

+0

一两行的示例源代码可以让你的答案完全 – 2017-11-23 13:02:21

5

StandardAnalyzer适用LowerCaseFilter,这将使“单词”和“单词”相同。你可以简单地通过你的使用IndexWriterQueryParser。例如。几行代码片段:

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30); 
IndexWriter writer = new IndexWriter(dir, analyzer, true, mlf); 
QueryParser parser = new QueryParser(Version.LUCENE_30, field, analyzer); 
1

将LowerCaseFilterFactory添加到Schema.xml中该字段的fieldType中。例如,

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" /> 
       <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 

      <analyzer type="query"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 
     </fieldType> 
+0

伟大的答案,但问题是关于Lucene的,它不具有像模式做的Solr – 2017-01-30 03:58:54