如何在solr中匹配精确的字符串和空格

时间:2016-08-19 13:53:49

标签: solr

这是我的solr架构文件代码

<repository>
        <id>prime-repo</id>
        <name>PrimeFaces Maven Repository</name>
        <url>http://repository.primefaces.org</url>
        <layout>default</layout>
</repository>

<dependency>
        <groupId>org.primefaces.themes</groupId>
        <artifactId>all-themes</artifactId>
        <version>1.0.10</version>
</dependency>

和我索引数据:“ Amit Patel ”,“ india

现在我想搜索数据:

  

印度

它的搜索很好,返回“印度”

如果我想搜索

  

amit patel

如何搜索此给出的异常,如果我像那样搜索

  

阿米特+巴特尔

然后我也没有得到“ amit patel ”请建议我如何实现不区分大小写的精确搜索(带空格)?

1 个答案:

答案 0 :(得分:1)

你实施它的方式应该没问题。

规则是,如果您只想匹配字段的确切值(但应用了可选的过滤器),则可以使用KeywordTokenizer。在应用任何过滤器之前,关键字标记器将整个输入保持为单个标记。

索引“Amit Patel”将输出一个单一的标记“Amit Patel”,然后您可以应用LowercaseFilter,最终结果为“amit patel”,最终得到您已经使用的定义:

<analyzer>
  <tokenizer class="solr.KeywordTokenizerFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>

请记住也要在正确的字段中排序。如果你得到一个例外,那么从异常开始并从那里开始向后工作是个好主意。语法中没有任何内容可以从您的示例中生成异常。