我正在使用solr4.1.0而我正试图让常用的单词短语搜索工作。这意味着在搜索“猫”时,我希望显示包含此短语的文档,而不是在某处或不同字段中包含“the”和“cat”的文档。
我有什么:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.CommonGramsFilterFactory" words="lang/stopwords.txt" format="snowball" />
<filter class="solr.StopFilterFactory" words="lang/stopwords.txt" format="snowball" enablePositionIncrements="true" />
</analyzer>
</fieldType>
当“普通”单词与来自stopwords.txt的禁用词组合时,这应该输出特殊的克令牌。在分析视图中,这可以按预期工作,因此“猫”被普遍编写为“the_cat cat”。
我的客户端所遇到的解决方案是,当查询中的停用词与普通单词一起使用时,只有具有此精确短语(stop-word-2-shingle)的元素才能匹配。整体默认运算符仍为AND。
例如,我有包含以下字段的文档
以下是我想要实现的内容的示例...基本上,用户在搜索和查询以及运算符方面或多或少是文盲,因此搜索应该解释输入并“做正确的事情”。正确的做法是:
这背后的原因是客户对某些(精心挑选的)停用词有一些具体的想法 那么这是一种现实的做法吗?是否有必要在将其传递给solr之前进行某种查询预解析?还有其他方法可以达到预期的效果吗?