这需要一些解释,但我认为这个讨论可以帮助任何人在Solr索引中使用重要短语。整理短语拼写检查结果Solr
我正在使用Solr在电子商务环境中进行搜索,并试图改进品牌名称的拼写检查建议。默认情况下,Solr会单独检查每个单词,而不考虑结果词组是否有意义。例如,搜索“paula dean”会带回“您的意思是:paula bean?”,而品牌名称实际上是“Paula Deen”。目前,我的拼写字典是一个名为spellField的空白标记字段。为了为拼写检查指定完整的品牌名称,我从我的数据库的品牌名称中使用我的Solr导入替换空格,即下划线,即Entree Casual Dining - > Entree_Casual_Dining。下面是spellField的字段类型的模式:
<fieldType name="spellcheckquery" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(\s[0-9]+\s)|(^[0-9]+\s)|(\s[0-9]+$)|(^[0-9]+$)" replacement="" replace="all"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(\s[0-9]+\s)|(^[0-9]+\s)|(\s[0-9]+$)|(^[0-9]+$)" replacement="" replace="all"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="4" outputUnigrams="true"/>
</analyzer>
</fieldType>
把下划线的品牌名称是我能想到的,以保持多字的品牌视为单个标记的空白标记化领域的最佳途径。在返回后,我可以轻松地删除下划线的返回拼写建议。因此,现在,当查询进入时,Solr对查询进行了细化处理,并为每个拼图寻找拼写建议,即搜索拼写错误的品牌:“entre casual dining” - >“entre”,“casual”,“餐饮“,”休闲娱乐“,”休闲餐饮“,”休闲餐饮“。 “entre_casual_dining”这个牌子的“entre_casual_dining”类似于索引中的内容(“Entree_Casual_Dining”),因此建议。大。
假设查询包含品牌名称和产品类型,如“entre casual dining table set”。我们希望找到品牌名称的拼写更正并替换整个拼写错误的品牌以返回“entree_casual_dining表格集”建议。我认为Solr的整理功能可以很好地处理这个问题。当我进入这个搜索,不过,Solr的找到正确的品牌的建议,但它不整理它放回结果:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">48</int>
</lst>
<result name="response" numFound="100" start="0"/>
<lst name="spellcheck">
<lst name="suggestions">
**<lst name="entre casual dining">**
<int name="numFound">1</int>
<int name="startOffset">0</int>
<int name="endOffset">19</int>
<int name="origFreq">0</int>
<arr name="suggestion">
<lst>
**<str name="word">entree_casual_dining</str>**
<int name="freq">21</int>
</lst>
</arr>
</lst>
<bool name="correctlySpelled">false</bool>
**<str name="collation">entre casual dining table set</str>**
</lst>
</lst>
</response>
它有没有问题整理时校正从一个单一的拼写错误的单词查询出来。例如,如果拼错“表”,它会将它整理回查询中。
当它试图整理来自多字词拼图的建议时会发生什么问题?
确实,有一些意想不到的行为。你认为有什么方法可以在我的拼写检查字段中放置完整的品牌名称标记,而该字段中的其他条款是用空格标记的?你能举出一个Solr整理多词关键词的例子吗?感谢您的答复! – 2012-04-03 13:31:42