我有一个正在尝试处理的查询,我搜索了它但找不到任何答案,我做错了什么,我想要搜索的是 %asd%,但我得到的是 asd% 结果而不是它,
我的字段类型是这样的,
<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>
我的查询是 name:asd,这是我的查询还是字段类型?谢谢你:)
最佳答案
如果你想进行像 %asd%
这样的搜索,你不需要 ngram 过滤器...基本上 solr 使用 ~
来表示单个字符和 *
搜索中的多个字符...
例如
name:asd~
将匹配 asda asdb asdc
等,而 name:asd*
将匹配 asdasadad asdfgkhjfgkl
和依此类推,您可以使用 name: ~asd~
来匹配 basdf
或 easdk
和 name:*asd*
对于 aldkaasdsdfsd
或 oippopasdoppm
据我所知,这种搜索不需要 ngram
关于php - mysql like %asd% 相当于 solr 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210720/