2016-08-11 92 views
0

我使用Solr的使用Apache的Nutch到索引网站Apache Solr实现搜索API默认结果过滤器

我的JSON结果如下:

"response": { 
"numFound": 0, 
"start": 0, 
"docs": [ 
    { 
    "id": "http://mysite.pl/cl-BR/link/link", 
    "url": "http://mysite.pl/cl-BR/link/link", 
    "content": [ 
     "content" 
    ], 
    "_version_": 0000 
    }, 
    { 
    "id": "http://mysite.pl/ru-RU/link/link", 
    "url": "http://mysite.pl/ru-RU/link/link", 
    "content": [ 
     "content" 
    ], 
    "_version_": 0000 
    }, 
    { 
    "id": "http://mysite.pl/en-EN/link/link", 
    "url": "http://mysite.pl/en-EN/link/link", 
    "content": [ 
     "content" 
    ], 
    "_version_": 0000 
    }, 

我想参数添加到我的查询,包含关于语言的信息转化成如下格式:en-EN 然后下一个返回搜索结果,其中url包含我的参数。

例如: 我的查询是:/solr/CoreName/select?q=you&fl=id,ul,content&urlContains=en-EN

我的结果是:

"response": { 
"numFound": 0, 
"start": 0, 
"docs": [ 
    { 
    "id": "http://mysite.pl/en-EN/link/link", 
    "url": "http://mysite.pl/en-EN/link/link", 
    "content": [ 
     "content" 
    ], 
    "_version_": 0000 
    }, 

当我查询:/solr/CoreName/select?q=you&fl=id,ul,content&urlContains=ru-RU

我的结果是:

"response": { 
"numFound": 0, 
"start": 0, 
"docs": [ 
    { 
    "id": "http://mysite.pl/ru-RU/link/link", 
    "url": "http://mysite.pl/ru-RU/link/link", 
    "content": [ 
     "content" 
    ], 
    "_version_": 0000 
    }, 

我怎样才能做到这一点?

回答

1

干净实施将add a custom field在你的架构,然后从use copyField to copyurl一个url_tokenized领域的内容。

<copyField source="url" dest="url_tokenized" /> 

通过using a PatternTokenizer你可以告诉Solr的通过/拆分代币,让你得到ru-RU作为url_tokenized领域的令牌:

<analyzer> 
    <tokenizer class="solr.PatternTokenizerFactory" pattern="/"/> 
</analyzer> 

这应该给你的东西,如:

<fieldType name="url_tokenized" class="solr.TextField"> 
    <analyzer> 
    <tokenizer class="solr.PatternTokenizerFactory" pattern="/"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

通过添加LowerCaseFilterFactory,我们将确保ru-RU和ru-ru都可以被发现,而不管使用的是套管。

查询将随后由应用筛选查询(fq)的查询字符串来完成:

...&fq=url_tokenized:ru-ru 

这将限制包含“/ RU-RU /”文件上的反应都在其URL。

+0

谢谢你!其作品! – Robson