使用带有点(。)的单词在 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.
以.结尾的单词。给我关于 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.