solr edismax搜索包含子串

时间:2016-02-03 11:34:08

标签: solr edismax

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

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

请注意:

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

    定义

    qf = field1 ^ 4 field2 ^ 3 field2 ^ 2 ...

  2. 搜索可能包含多个单词,例如。对于q=abc def我希望包含两个单词的字段包含" abc"和包含" def"的单词,例如使用q.op=AND

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

1 个答案:

答案 0 :(得分:0)

您可以使用NGramFilter来实现此目的。它会将术语拆分为多个令牌,其中每个令牌都是原始令牌的子串。

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