我正在使用Apache Solr为网站创建搜索功能。 我使用默认类型text_it设置文本字段,text_it在托管架构中定义如下:
<fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ElisionFilterFactory" articles="lang/contractions_it.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_it.txt" ignoreCase="true"/>
<filter class="solr.ItalianLightStemFilterFactory"/>
</analyzer>
</fieldType>
我有一个大型熟食产品数据库。每个产品都有产品类型和生产者的名称。例如:
请注意, di 一词在文件stopwords_it.txt中被归类为意大利语停用词。
给出上面的记录,如果我在没有指定字段名称的情况下查询 brunello di montalcino ,我会在字段product-type中获得所有带有 di 字样的记录。不幸的是,结果很大,并且大多数与用户查询完全无关。显然这不是我想要的。
理想情况下,我只希望获得 brunello di montalcino 的2条记录。也可以用 miele di montalcino
获得记录什么样的solr设置可以让我实现这个目标?
由于
C
答案 0 :(得分:0)
在设计完模式(正如您所做)之后,正确使用了停用词和收缩文件,以下步骤是设计solrconfig.xml,特别是将处理您的请求的请求处理程序。 在那里,您可以使用默认字段配置查询解析器,并可能提前配置(例如要涉及的不同字段,不同的提升等)[1]
正确配置请求处理程序后,您可以运行短语查询(引号很重要): “brunello di montalcino”
如果您想要更多一点灵活性,您可以使用您的相关性并指定(最小匹配)因子来获得您提到的结果(使用miele di Montalcino)
[1] https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing