url - 在 Solr 中索引和查询 URL

标签 url indexing solr tokenize querying

我有一个要搜索的 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>

例如:

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

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

myfield:("twitter com andersoncooper") 当真的希望它匹配具有以下所有单独单词的所有记录时:twitter com andersoncooper

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

最佳答案

如果我从你的问题中理解了这个说法

myfield:("twitter com andersoncooper") when really want it to match all records that have all of the following separate words: twitter com andersoncooper



您正在尝试编写一个与两者都匹配的查询:
http://www.twitter.com/AndersonCooper


http://www.andersoncooper.com/socialmedia/twitter

(两个链接都包含 所有 的 token ),但不匹配
http://www.facebook.com/AndersonCooper 

或者
http://www.twitter.com/AliceCooper

如果这是正确的,您现有的配置应该可以正常工作。假设您正在使用标准查询解析器并且您通过 curl 或其他一些基于 url 的机制进行查询,您需要查询参数如下所示:
&q=myField:andersoncooper AND myField:twitter AND myField:com

可能让您感到困惑的问题之一是默认查询运算符(在查询中的术语之间)是“OR”,这就是必须在上面明确指定 AND 的原因。或者为了节省一些空间,您可以将默认查询运算符更改为“AND”,如下所示:
&q.op=AND&q=myField:(andersoncooper twitter com)

关于url - 在 Solr 中索引和查询 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684069/

相关文章:

elasticsearch - 如何将 Lucene 查询字符串转换为 Elasticsearch Match/Match_Prefix 等等效项

url - CakePHP:高级 'SEO' 路由 - 如何保存旧 URL 更改帖子的路由,用于外部链接的 301 重定向

java - 在后台使用 Java 打开 URL

python - pandas 多索引 DataFrame 中的圆形 float

jQuery 获取相同类对象相对于父对象的索引

elasticsearch - 更改任何NON-INDEXED字段的映射时,是否需要强制为所有较旧的文档重新编制索引?

java - Solr 查询返回一个字段的部分匹配项,而不是另一字段

python - key 错误 : 'id' when trying to index documents to Solr using sunburnt

mysql - URL 重写 PHP 并从 MySql DB 中提取数据

php - 用 HTML 链接替换文本中的 URL