我一直在谷歌上搜索,试图找出如何将查询设置为不区分大小写。我目前正在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”不会。
感谢您的帮助!
答案 0 :(得分:2)
您可能希望查看solr Schema,因为可能会在其中配置分析器。具体来说,如果在模式中配置了LowerCaseFilterFactory,它将在索引内容时将文本术语转换为小写,在查询时间也是如此。以下示例是您可能想要查找的内容。
<fieldtype name="text" class="solr.TextField">
<analyzer>
......
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldtype>