使用 eDisMax 和 SOLR 5.2.1 搜索字符串,当我将 q
参数设置为该字符串时,SOLR 仅将包含该字符串的字段作为整个单词进行匹配。 例如 q=bc123
将匹配"aa-bc123",但不匹配"aabc123"。 如果我在短语之前或之后添加*
字符,则为了匹配搜索,必须有尾随字符和前导字符。 例如,q=*bc123*
将匹配"abc123a",但不会匹配"bc123"。
问题是 - 什么查询字符串将匹配包含带有或不带有尾随/前导字符的搜索词的单词?
请注意:
-
有多个字段要匹配,这些字段使用
qf
参数定义qf=field1^4 field2^3 field2^2 ...
-
搜索可能包含多个单词,例如。 对于
q=abc def
,我希望字段同时包含包含"abc"的单词和包含"def"的单词,例如使用q.op=AND
-
我尝试使用模糊搜索,但根据阈值,我得到了不同程度的误报或省略结果。
您可以使用 NGramFilter 来实现此目的。它会将术语拆分为多个令牌,其中每个令牌将是原始令牌的子字符串。
仅在编制索引时才需要筛选器(查询时,令牌应直接匹配(。