擅长:python、mysql、java
<p><strong>您可以在Whoosh中使用模糊搜索将<code>Co</code>与{<cd2>}进行匹配,但由于<code>Co</code>和{<cd2>}之间的差异很大,所以不应该</strong>进行匹配。<code>Co</code>与<code>Company</code>相似,因为<code>Be</code>与{<cd8>}相似,<code>ny</code>与{<cd2>}相似,你可以想象搜索结果有多糟糕,有多大。在</p>
<p>但是,如果您想将<code>Compan</code>或<code>compani</code>或{<cd13>}与{<cd2>}匹配,可以使用<code>FuzzyTerm</code>的个性化类,默认<code>maxdist</code>等于2或更多:</p>
<blockquote>
<p><strong>maxdist</strong> – The maximum edit distance from the given text.</p>
</blockquote>
<pre><code>class MyFuzzyTerm(FuzzyTerm):
def __init__(self, fieldname, text, boost=1.0, maxdist=2, prefixlength=1, constantscore=True):
super(MyFuzzyTerm, self).__init__(fieldname, text, boost, maxdist, prefixlength, constantscore)
</code></pre>
<p>然后:</p>
^{pr2}$
<p>您可以通过将<code>maxdist</code>设置为<code>5</code>来匹配<code>Co</code>和{<cd2>},但是我说的这会导致错误的搜索结果。我建议将<code>maxdist</code>从<code>1</code>保留到{<cd23>}。在</p>
<p>如果您正在寻找匹配词的语言变体,最好使用<a href="https://whoosh.readthedocs.org/en/latest/api/query.html#whoosh.query.Variations">^{<cd24>}</a>。在</p>
<p><strong>注意:</strong>旧版的Whoosh有<code>minsimilarity</code>而不是{<cd16>}。在</p>