以a结尾的单词。在solr给我一个问题。
当我搜索查询l.l.*
时
我得到l.l.p , l.l.a etc...
的结果
但我没有得到结果l.l.
我已将分析仪设置如下
<field name="C" type="text_general" multiValued="false" indexed="true" stored="true">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</field>
我希望每个单词都以l.l这样的单词开头。并且还应该出现完全匹配。
答案 0 :(得分:0)
您的问题不清楚您使用的是什么查询解析器,我假设edismax。
因此,查询解析器中使用的星号*
匹配一个或多个字符。
如果您还希望匹配1.1.
,则应添加OR
子句:
("1.1." OR 1.1.*)
在SolrJ中你会将其翻译成:
solrQuery.setQuery("(\"1.1.\" OR 1.1.*)");
另一种方法是直接在Solr查询中添加正则表达式。
在你的情况下是这样的:
field:/1\.1\..*/
在SolrJ中你会将其翻译成:
solrQuery.setQuery("field:/1\\.1\\..*/");
Solr 4.0添加了正则表达式支持,这意味着'/'现在是一个特殊字符,如果搜索文字正斜杠,则必须进行转义。