Solr:查询子串匹配

waxmsbnn  于 9个月前  发布在  Solr
关注(0)|答案(1)|浏览(82)

我们收到一个逗号分隔的关键字列表,如下所示:

  1. brand tv, phone, tablet
  2. brand
  3. technology, phone
    上述各项将对应于一份Solr文件。我们想要实现的是以下行为:
  • 搜索brand将返回项目2。
  • 搜索brand tv将返回项目1和2。
  • 搜索grey brand tv将返回项目1和2。
  • 搜索foo bar brand tv baz将返回项目1和2。
  • 搜索phone case将返回项目1和3。

我们试图通过...
. on the index end:

  • <tokenizer class="solr.PatternTokenizerFactory" pattern=","/>

. on the query end:

  • <tokenizer class="solr.WhitespaceTokenizerFactory"/>
  • <filter class="solr.ShingleFilterFactory" maxShingleSize="2" tokenSeparator=" "/>

但这并不像我们想要的那样。此外,无论我们将maxShingleSize设置为多高,总会有高于该限制的情况。

ou6hu8tu

ou6hu8tu1#

我们最终只是在客户端上的输入,并在这些瓦片中搜索一个完全匹配。由于我们的关键词很少包含超过3个单词,因此我们最多使用3个单词。

**示例:**当搜索查询为“brand tv grey”时,我们搜索keywords:("brand" OR "tv" OR "grey" OR "brand tv" OR "tv grey" OR "brand tv grey")
替代方法(未经测试)-可能对其他人有帮助

上述行为可以通过引入Querqy和使用装饰规则来实现。

相关问题