如何使用solrj

时间:2016-01-02 01:37:35

标签: solr solrj

我使用Solrj作为Solr的客户端,为了执行不区分大小写的查询,我在schema.xml文件中声明了自定义跟随类型

<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我想执行不区分大小写的搜索

正如我所说的,我在这里添加了我的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();
你有什么想法吗?我错过了什么吗?

谢谢

1 个答案:

答案 0 :(得分: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上执行不区分大小写的搜索