SOLR将对街道名称执行匹配吗?

时间:2018-10-02 03:09:23

标签: search solr lucene

我有一个有关在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与上面的数据进行匹配的技术?任何帮助表示赞赏。

1 个答案:

答案 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>