使用带有点(。)的单词在 solr 上搜索

Searching on solr with word having dot(.)

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

你的问题不清楚你使用的是什么查询解析器,我假设是 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 added regular expression support, which means that '/' is now a special character and must be escaped if searching for literal forward slash.

看看SolrQuerySyntax and Solr Regex Query Tutorial