2016-08-11 133 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