flo*_*low 3 lucene solr levenshtein-distance
我有一个很长的单词列表,我把它放入一个非常简单的SOLR/Lucene数据库.我的目标是从列表中为单项查询找到"相似"的单词,其中"相似性"特别理解为(damerau)levensthein编辑距离.我知道SOLR为拼写建议提供了这样的距离.
在我的SOLR中schema.xml,我配置了一个字段类型string:
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
Run Code Online (Sandbox Code Playgroud)
我用它来定义一个字段
<field name='term' type='string' indexed='true' stored='true' required='true'/>
Run Code Online (Sandbox Code Playgroud)
我想搜索这个字段,并根据他们的levenshtein编辑距离返回结果.但是,当我webspace~0.1通过调试和解释运行类似于SOLR 的查询时,报告显示计算得分时需要考虑大量因素,例如:
"1582":"
1.1353534 = (MATCH) sum of:
1.1353534 = (MATCH) weight(term:webpage^0.8148148 in 1581), product of:
0.08618848 = queryWeight(term:webpage^0.8148148), product of:
0.8148148 = boost
13.172914 = idf(docFreq=1, maxDocs=386954)
0.008029869 = queryNorm
13.172914 = (MATCH) fieldWeight(term:webpage in 1581), product of:
1.0 = tf(termFreq(term:webpage)=1)
13.172914 = idf(docFreq=1, maxDocs=386954)
1.0 = fieldNorm(field=term, doc=1581)
Run Code Online (Sandbox Code Playgroud)
很明显,对于我的应用,术语频率,idfs等是没有意义的,因为每个文档只包含一个术语.我试图使用拼写建议组件,但没有设法让它返回实际的相似性分数.
有谁能够提供线索如何配置SOLR与返回分数和执行levensthein /哈罗-温克勒/ n元搜索没有做额外的东西一样tf,idf,boost等收录?SOLR在哪里有一个简单的配置样本?我发现选项的数量确实令人生畏.
如果您正在使用每晚构建,那么您可以使用strdist函数根据levenshtein距离对结果进行排序:
q=term:webspace~0.1&sort=strdist("webspace", term, edit) desc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4442 次 |
| 最近记录: |