2016-04-05 204 views
0

我想創建一個非常簡單的solr應用程序,我將索引標題和id。我想在沒有任何大小寫的情況下搜索標題,並且我使用了LowerCaseFilterFactory過濾器,但是有些過程不起作用。我也想阻止搜索支持。不區分大小寫Solr 5.5

以下是我的模式文件。

<?xml version="1.0" encoding="UTF-8" ?> 

<schema name="example" version="1.5"> 

    <field name="_version_" type="long" indexed="true" stored="true"/> 
    <field name="_root_" type="string" indexed="true" stored="false"/> 
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

<uniqueKey>id</uniqueKey> 
<field name="title" type="text" indexed="true" stored="true"/> 
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> 
<fieldType name="string" class="solr.StrField" sortMissingLast="true" /> 
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
       <tokenizer class="solr.KeywordTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
</fieldType> 
</schema> 

任何指針將不勝感激。

在此先感謝。

回答

2

您正在使用「KeywordTokenizerFactory」進行索引,「WhitespaceTokenizerFactory」用於查詢。

這裏兩者的輸出是不同的。

KeywordTokenizerFactory保持原樣。它不會標記字/文本。

WhitespaceTokenizerFactory是在空白處分割文本的標記器。

PorterStemFilterFactory:一個標準化過程,從單詞中刪除常見的結尾。

Example: "riding", "rides", "horses" ==> "ride", "ride", "hors". 

您可以嘗試修改字段類型。

現在,這是留給你的要求,要實現搜索,然後決定建立自定義fieldType或者可以使用在schema.xml

提到fieldType你可以嘗試一個字段中鍵入象下面這樣怎麼辦爲您現場標題

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
     <analyzer type="query"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
</fieldType> 

OR

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
</fieldType> 
+0

我試過相同,但仍然不區分大小寫不工作。我正在使用託管架構而不是schema.xml –

+0

您是否在solr管理界面上驗證過相同?在更改之後,您是否重新啓動服務器並重新索引數據? –