2016-01-02 107 views
0

我使用Solrj作爲Solr的客戶端,爲了執行不區分大小寫的查詢,我在schema.xml文件中聲明瞭自定義以下類型如何使用solrj執行不區分大小寫的solr查詢

<fieldType name="text_ci" class="solr.TextField"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

然後我有一個使用這種類型的字段,對手是針對這個領域執行

<field name="name" type="text_ci" indexed="true" stored="true"/> 

問題是,當我執行我的Solrj的管理面板一切查詢是很好,我得到了我的結果,但從我的Java應用程序(使用solrj)搜索似乎區分大小寫,我沒有找到在哪裏我可以指定,並告訴我要進行區分大小寫的搜索

至於問我在這裏加了我solrj代碼

String[] filters = new String[1];  
filters[0] = "name:\"Obama\」"; 
String[] fields = new String[] { "uuid", "name" }; 
q = "all:*%s*"; 
SolrQuery query = new SolrQuery(); 
query.setQuery(q); 
query.addFilterQuery(filters); 
query.setFields(fields); 
query.setStart(0); 
query.setRows(5); 
QueryResponse response = this.solrInstance.query(query); 
SolrDocumentList results = response.getResults(); 

你有任何想法的傢伙solrj?我錯過了什麼 ?

謝謝

+0

你能告訴您的查詢字符串? –

+0

SolrJ只是您的行爲的外觀... 您是如何在管理面板中運行查詢的?你是否有來自區分大小寫字段的複製字段聲明?你運行的查詢是什麼? –

+0

它的一個簡單的查詢,如名稱:solr管理面板中的「觀察」如果我搜索名稱:「奧巴馬」或名稱:「奧巴馬」我有相同的結果,但是在Solrj搜索區分大小寫,我知道Solrj只是一個外觀和基本調用solr API,但你如何解釋這種行爲?謝謝 – mahieddine

回答

1

我結束了創建一個新的類型

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


    <field name="mysuperfield" type="ci_text" indexed="true" stored="true"/> 

對於這種類型的,現在我可以對mysuperfield情況下,incensitive搜索