使用SolrBundle在Symfony2中的Solr区分大小写

时间:2014-02-01 01:55:30

标签: php symfony solr

我一直在谷歌上搜索,试图找出如何将查询设置为区分大小写。我目前正在this github page使用Florian Semm的SolrBundle。我认为这就像说$query->setCaseSensitive(false);或类似的东西一样简单,但显然不是。有任何想法吗?我正在使用Solr4.1.6和Symfony 2.4.1,如果这有任何区别。

这就是我到目前为止......

$solrQuery = $this->get('solr.client.default')
                  ->createQuery('MyBundle:User')
                  ->addSearchTerm('name', $queryString)
                  ->addSearchTerm('surname', $queryString);
$solrQuery->setUseWildcard(true);

$entities = $solrQuery->getResult(); 

这显然可以正确返回,但前提是查询的大小写正确。例如,搜索“Thom”会返回包含“Thomas”的实体,但“thom”不会。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可能希望查看solr Schema,因为可能会在其中配置分析器。具体来说,如果在模式中配置了LowerCaseFilterFactory,它将在索引内容时将文本术语转换为小写,在查询时间也是如此。以下示例是您可能想要查找的内容。

<fieldtype name="text" class="solr.TextField">
  <analyzer>
    ......
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldtype>