2016-08-11 13 views
0

私は、Apache NutchのでSolrのを使用していますインデックスのウェブサイトへの私のJSONの結果は次のようになりますのApache Solrの検索APIのデフォルトの結果フィルタ

"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_tokenizedフィールドへurlからのコンテンツです。 using a PatternTokenizerことで

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

あなたはurl_tokenizedフィールドにトークンとしてru-RUを得るようにあなたは、/でトークンを分割してSolrを伝えることができます。

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

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

はあなたのような何かを与える必要があります

LowerCaseFilterFactoryを追加することにより、使用されるケーシングに関係なく、ru-RUとru-ruの両方が検出されるようにします。

のクエリは、クエリ文字列にフィルタクエリ(fq)を適用することによって行われることになります。

...&fq=url_tokenized:ru-ru 

これは、そのURLの「/ RU-RU /」どこかが含まれている文書への応答を制限します。

+0

ありがとうございました!それは作品です! – Robson

関連する問題