我有一个有关在SOLR中匹配街道名称的查询。
要匹配的实际街道名称是POTTS ROAD EVANSFIELD VIC。我已将数据存储在三个字段中:
street_name_clean : POTTSROADEVANSFIELDVIC
street_name_space : POTTS ROAD EVANSFIELD VIC
street_name : POTTS, ROAD, EVANSFIELD, VIC
之所以要存储数据,是因为我可以执行精确搜索,模糊搜索,ngram搜索,邻近匹配等。
我看到一种情况,用户输入POTTROAD(实际街道名称中缺少S),而我所有的搜索均失败。
是否有将POTTROAD与上面的数据进行匹配的技术?任何帮助表示赞赏。
答案 0 :(得分:0)
由于@MatsLindh的建议,我实现了ShingleFilter,如下所示:
<fieldType name="text_general_shingle" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="4" outputUnigrams="false"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(\s+)" replacement="" replace="all" />
</analyzer>
</fieldType>