我们有电影和电视剧的数据库,并作为数据来自不同的可靠性的来源很多,我们希望能够做到对事件的标题模糊字符串匹配。 我们使用Solr的在我们的应用程序搜索,但是默认的匹配机制上字的水平,这是不够的短字符串,如标题操作
我曾使用过的n-gram近似匹配,在过去,我很高兴地发现,Lucene的(和Solr)支持这个东西开箱。 不幸的是,我一直没能正确配置。
我认为我需要为这个特殊的字段类型,所以我增加了以下字段类型我的schema.xml:
<fieldType
name="trigrams"
stored="true"
class="solr.StrField">
<analyzer type="index">
<tokenizer
class="solr.analysis.NGramTokenizerFactory"
minGramSize="3"
maxGramSize="5"
/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
并改变相应的字段的架构:
<field name="title" type="trigrams"
indexed="true" stored="true" multiValued="false" />
但是,这是行不通的,因为我的预期。 查询分析看起来正确,但我没有得到任何结果,这使我相信,事情发生在索引时间(即标题被索引像一个默认字符串场,而不是卦场)。
我想查询是一样的东西
title:"guy walks into a psychiatrist office"
(有一个错字或两个),并应符合“人走入精神病医生办公室”。
(我真的不知道,如果查询是正确的。)
此外,我希望能够做更多的事情,其实。 我想lowercace字符串,删除所有标点符号和空格,删除停用词的英语,然后更改串入卦。 然而,过滤器应用于字符串已经被符号化后,才...
在此先感谢您的回答。