在Solr中索引和查询URLS

Kid*_*A78 7 indexing url solr querying tokenize

我有一个我想要搜索的URL数据库.因为URL并不总是写成相同的(可能有也可能没有www),我正在寻找索引和查询URL的正确方法.我尝试了一些东西,我认为我很接近但不确定为什么它不起作用:

这是我的自定义字段类型:

 <fieldType name="customUrlType" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)

例如:

http://www.twitter.com/AndersonCooper 在编入索引时,将在不同的位置有以下单词:http,www,twitter,com,andersoncooper

如果我只搜索twitter.com/andersoncooper,我希望这个查询匹配索引的记录,这就是为什么我也使用WDF来分割搜索查询,但搜索查询最终是这样的:

myfield :("twitter com andersoncooper")真的希望它匹配所有包含以下所有单词的记录:twitter com andersoncooper

我应该使用不同的查询过滤器或标记器吗?

Joy*_*yce -1

您可以尝试关键字标记器

摘自Packt 出版的 《Solr 1.4 Enterprise Search Server》一书

KeywordTokenizerFactory:这实际上并没有做任何标记化或任何事情!它将原始文本作为一个术语返回。在某些情况下,您的字段总是包含一个单词,但您需要进行一些基本分析,例如小写。然而,更有可能的是,由于排序或分面要求,您将需要一个不超过一个术语的索引字段。当然,如果提供文档的标识符字段而不是数字,则将使用它。