2011-04-01 159 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