我正在建立一个基于 solr 搜索的重复数据删除系统,该系统将返回匹配搜索条件的搜索结果。我使用数据导入处理程序从数据库中提取数据并在 Solr 服务器上创建索引文档。
我的 solr 架构如下:
<field name="customer_id" type="int" indexed="true" stored="true" required="true" />
<field name="fname" type="phonetic" indexed="true" stored="true" />
<field name="lname" type="phonetic" indexed="true" stored="true"/>
<field name="address" type="text_en" indexed="true" stored="true" />
<field name="city" type="string" indexed="true" stored="true" />
<field name="state" type="string" indexed="true" stored="true" />
<field name="zipcode" type="string" indexed="true" stored="true" />
<field name="telephone" type="string" indexed="true" stored="true" />
如上所示,我已将名字 (fname) 和姓氏 (lname) 字段的类型指定为使用 DoubleMetaphoneFilterFactory 进行拼音搜索的拼音。音域类型说明如下:
<fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15" side="front"/>
<filter class="solr.DoubleMetaphoneFilterFactory" inject="true"/>
</analyzer>
</fieldtype>
我希望我的搜索返回与所有指定查询字段匹配的文档,而不仅仅是任何一个搜索字段。
我的问题是,如果我单独搜索 fname、lname 或地址,则结果非常相关,但是当我将过滤查询与主要搜索查询一起使用时,结果包含来自两个搜索条件的结果的联合。
请有人指出我做错了什么。此外,是否有任何最佳实践需要牢记,以便为可以识别重复客户记录的银行的这种重复数据删除系统设计 solr 架构。
提前致谢!!