搜索带有点(。)的单词的solr

时间:2017-03-21 06:31:35

标签: solr lucene solrj

以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这样的单词开头。并且还应该出现完全匹配。

1 个答案:

答案 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添加了正则表达式支持,这意味着'/'现在是一个特殊字符,如果搜索文字正斜杠,则必须进行转义。

查看SolrQuerySyntaxSolr Regex Query Tutorial