我们收到一个逗号分隔的关键字列表,如下所示:
brand tv, phone, tablet
brand
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
设置为多高,总会有高于该限制的情况。
1条答案
按热度按时间ou6hu8tu1#
我们最终只是在客户端上的输入,并在这些瓦片中搜索一个完全匹配。由于我们的关键词很少包含超过3个单词,因此我们最多使用3个单词。
**示例:**当搜索查询为“brand tv grey”时,我们搜索
keywords:("brand" OR "tv" OR "grey" OR "brand tv" OR "tv grey" OR "brand tv grey")
。替代方法(未经测试)-可能对其他人有帮助
上述行为可以通过引入Querqy和使用装饰规则来实现。