我有一个URL数据库需要搜索。由于URL的书写方式不总是相同(可能有www,也可能没有),我正在寻找正确的索引和查询URL的方法。
我尝试了几个方法,但仍不确定为什么它不起作用:
以下是我的自定义字段类型:
例如:
当索引时,http://www.twitter.com/AndersonCooper将在不同的位置具有以下单词:http、www、twitter、com和andersoncooper。
如果我只搜索twitter.com/andersoncooper,我希望此查询与已索引的记录匹配,这就是为什么我还使用WDF拆分搜索查询的原因,但搜索查询最终变成了这样:
myfield:("twitter com andersoncooper"),而我真正想要的是匹配所有具有以下单独单词的记录:twitter、com和andersoncooper。
是否应该使用不同的查询过滤器或分词器?
以下是我的自定义字段类型:
<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>
例如:
当索引时,http://www.twitter.com/AndersonCooper将在不同的位置具有以下单词:http、www、twitter、com和andersoncooper。
如果我只搜索twitter.com/andersoncooper,我希望此查询与已索引的记录匹配,这就是为什么我还使用WDF拆分搜索查询的原因,但搜索查询最终变成了这样:
myfield:("twitter com andersoncooper"),而我真正想要的是匹配所有具有以下单独单词的记录:twitter、com和andersoncooper。
是否应该使用不同的查询过滤器或分词器?