Solr / Lucene索引文本列的行为类似于最先匹配的SQL LIKE '%foo%
,最好的方法是什么?在我的情况下,“最佳”意味着首先是完全匹配,然后在更多额外之前减少额外字符。例如
搜索“1234”应该返回
到目前为止我尝试过的内容并不常用(列映射为text_en_splitting
)
1234
- >只有完全匹配*1234*
- >找到所有内容,但没有得到更高的匹配1234~
- >将匹配12345,但不会得到更高的完全匹配。不会匹配更长的字符串,如“001234567890”。答案 0 :(得分:0)
要获得更高的精确匹配,您可能需要在您的字段中搜索将提供所有匹配,而第二个搜索将仅产生完全匹配(带有一些提升)。
要避免在查询中使用星号(它们会降低搜索速度),您可以在架构中使用NGramFilterFactory。
请记住您的查询可能如下:
q=1234&qf=ngram_text_field,simple_text_field^2&defType=edismax
有关edismax
的更多信息