2015-10-20 122 views
0

我的架構配置如下所示大小寫敏感的,在敏感的同一領域的搜索

<fieldType class="org.apache.solr.schema.TextField" name="TextField"> 
<analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldType> 

<field indexed="true" multiValued="false" name="message" stored="true" type="TextField"/> 

的代碼是這樣

if(casesensitive == true) 
{ 
    // do case sensitive search 
} 
else 
{ 
    // do case in-sensitive search 
    http://1.2.3.4/solr/a.b/select?q=message:"hit" 
} 

我能夠正確地做這個領域不區分大小寫。但是如果我輸入「Hit」,我希望SOLR返回匹配相同大小寫的記錄。

此外,我不想在我的Solr中創建單獨的字段,我想從同一字段獲取記錄。任何幫助,將不勝感激。

回答

1

我不認爲它是可能的。如果要實現這兩種情況,則需要添加另一個字段。

您需要有2個字段。其中一個你將添加LowerCase Filter工廠,另一個不添加。

使用單個字段是不可能的。 Solr將按照您定義fieldType的方式對數據進行索引。

0
  1. 使用copyField與商店= false,並改變你對搜索客戶端上
  2. 小寫的字段。
  3. 基於額外標誌(例如,區分大小寫)創建a complex request processor with switch cases並執行不同的查詢。

如果你需要做的大量的字段,你也可以定義替代請求處理程序和redefine aliases的領域指向區分大小寫或不區分大小寫的版本。