0

我的数据库包含 first_name 作为“Sumit”,当我搜索它时,它给了我以下 first_name:Sumit~0.7 / first_name:Sumits~0.7 的结果

但是,如果我尝试像 -first_name:SUMIT~0.7 / first_name:SUMIT~0.7 这样不区分大小写的搜索,它不会返回任何内容

我的 schema.xml 内容是:

    <fieldType name="custum_fuzzy_text" class="solr.TextField" omitNorms="false">
     <analyzer type="index"> 
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StandardFilterFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StandardFilterFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

任何人都可以帮忙吗?难道我做错了什么?或者我有没有做其他事情

4

2 回答 2

2

分析仪

On wildcard and fuzzy searches, no text analysis is performed on the search word.

由于在查询时没有对模糊搜索进行分析,因此在查询时将应用小写过滤器。
您需要在客户端处理它。

于 2013-01-11T10:47:15.760 回答
1

您使用的是哪个版本的 Solr?这是相当重要的。此外,您实际上是在使用 ' ' (如 Summit)还是只是普通文本进行模糊查询。这两种情况也不同。

如果您正在执行“*”查询并且您的 Solr 在 3.6 之前,那么您遇到了 MultiTerm 问题(Fuzzy 的技术名称)。

如果您不使用 *,我不确定问题是什么。在 Solr 4 中,Admin 界面有 Analyzer 部分,您可以在其中将文本与字段定义放在一起,然后查看结果。试试看。

最后,作为一个说明,如果你的索引和查询分析器集是一样的,你不需要写两次,只需要一个组合分析器部分(没有 type=...)

于 2013-01-11T14:47:38.213 回答