としてフィールドに用語のシーケンスを渡すために、次のように私は定義されたフィールドタイプを持っている:Solrの:どのように単一のクエリ文字列
<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>
私は(passage_bodyという名前)フィールドを照会したいの、このタイプは、(例えば)以下:
passage_body Q =(DPGC招集の用語)
問題は、このフィールドのテキストにインデックスを付ける際に、アナライザは正常に機能します。しかし、クエリー中にdebugQueryパラメータをtrueに設定すると、フィールドが意図されたとおりに解析されないことがわかります(帯状疱疹は形成されません)。これはデバッグ出力です。
<str name="rawquerystring">passage_body:(the term of dpgc convener)</str><str name="querystring">passage_body:(the term of dpgc convener)</str><str name="parsedquery">passage_body:term passage_body:dpgc passage_body:convener</str><str name="parsedquery_toString">passage_body:term passage_body:dpgc passage_body:convener</str>
Solr adminでクエリを分析すると、出力は期待どおりです。 私は標準クエリパーサーの "sow"クエリパラメータをfalseに設定しようとしましたが、それでもうまくいきませんでした。要するに
が、これが私の最後のクエリです:
http://localhost:8983/solr/mnitdocs/select?q=passage_body:(the term of dpgc convene)&sow=false&debugQuery=true
一言で言えば、私はpassage_bodyの帯状疱疹にクエリの帯状疱疹にマッチさせたいです。 方法をご提案ください。私がSolrを初めて知りましたので、他の提案も歓迎します。
私はSolr 5.3.1を使用しています。
あなたは全体のq =ペイロードをエンコードするURLを試してみましたか?passage_body%3A(%20term%20of%20dpgc%20 convene) –
どのようにクエリ文字列を解析するかの例を投稿できますか? –
"DPGC Convenerの用語"として渡されるクエリ文字列が必要です。私はそれが単一の文字列であることを示すために引用符を使用していますが、フレーズではありません。アナライザはこの文字列を処理する必要があります(トークン化、帯状疱疹の作成)。 – user7568303