0

使用 eDisMax 和 SOLR 5.2.1 搜索字符串,当我将q参数设置为该字符串时,SOLR 仅匹配包含该字符串作为整个单词的字段。例如, q=bc123将匹配“aa-bc123”但不匹配“aabc123”。如果我*在短语之前或之后添加字符,而不是匹配搜索,则必须有尾随和前导字符。例如,q=*bc123*将匹配“abc123a”但不会匹配“bc123”。

问题是——什么查询字符串将匹配包含搜索词的词,有或没有尾随/前导字符?

请注意:

  1. 有多个字段要匹配,使用qf参数定义

    qf=字段1^4 字段2^3 字段2^2 ...

  2. 搜索可能包含多个单词,例如。因为q=abc def我想要同时包含包含“abc”的单词和包含“def”的单词的字段,例如使用q.op=AND

  3. 我曾尝试使用模糊搜索,但我得到了不同程度的误报或遗漏结果,具体取决于阈值。

4

1 回答 1

0

您可以使用NGramFilter来实现此目的。它将术语拆分为多个标记,其中每个标记将是原始标记的子字符串。

只有在索引时才需要过滤器(查询时,标记应直接匹配)。

于 2016-02-03T12:29:48.883 回答