我已经使用SOLR实现了一个地址搜索,并希望在查询时用空格替换一些文本。如。,如果有人输入"未定义"这样的单词;我想把它替换成空白
So, 5 Ford Undefined Street becomes 5 Ford Street
我已经实现了同义词
lt => little
我如何继续定义,以便在查询时,未定义转换为空格?
查询的模式定义如下:
<analyzer type="query">
<filter class="solr.PatternReplaceFilterFactory" pattern="([,]+)" replacement=" " replace="all"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
<filter class="solr.FlattenGraphFilterFactory"/>
</analyzer>
如果您想要删除令牌,您可以使用普通的旧StopFilter。虽然大多数人认为过滤器用于删除不相关的单词,如the
和of
,但它可以用于任何单词列表。
将Undefined
(和您想要删除的其他单词)添加到单词列表并在分析链中添加停止过滤器:
<filter name="stop" words="stopwords.txt" />
or
<filter class="solr.StopFilterFactory" words="stopwords.txt"/>