【问题标题】:solr edismax search for words containing substringsolr edismax 搜索包含子字符串的单词
【发布时间】:2016-02-03 11:34:08
【问题描述】:

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

【问题讨论】:

    标签: solr edismax


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 2012-03-13
      • 2014-07-04
      • 1970-01-01
      • 2023-03-10
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      相关资源
      最近更新 更多