我一定是在尝试运行以下搜索时做错了什么
http://localhost:8983/solr/collection1/select?q=url:www.abc.com&wt=xml&indent=true
它没有给这些网站带来结果,它正在回馈所有东西。 schema.xml在如何设置url方面非常普遍。
<fieldType name="text" class="solr.TextField"
positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="url" class="solr.TextField"
positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"/>
</analyzer>
</fieldType>
如果我使用主机:www.abc.com,它可以使用。
为什么使用url字段时看似不正确的结果?
感谢您的帮助。
答案 0 :(得分:1)
假设您使用的是Solr 3.1或更高版本。
StandardTokenizerFactory - 它基于Word Boundary rules创建令牌。这意味着URL将被分解为多个令牌,并且其中任何一个上的匹配都将被视为命中。
尝试使用KeywordTokenizerFactory作为url
字段类型。这应保留完整的URL并仅与之匹配。
答案 1 :(得分:0)
除了使用KeywordTokenizerFactory之外,您还必须删除WordDelimiterFilterFactory。 WDF在标点符号和其他分隔符上分割标记...这些URL非常丰富。在进行更改并重新启动Solr或重新加载核心之后,您必须重建索引。
另一个想法是,如果您不需要强制URL为小写:从TextField切换到StrField并完全摆脱分析器配置。