Solrへのリクエストでfqparamを使用すると奇妙な問題が発生します
curl '127.0.0.1:8080/solr/app/select?rows=0&start=0&q=app+AND+categoryId:20'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int>
<lst name="params"><str name="start">0</str><str name="q">app AND categoryId:20</str>
<str name="rows">0</str></lst></lst>
<result name="response" numFound="42236" start="0"></result>
</response>
および2番目のリクエスト
curl '127.0.0.1:8080/solr/app/select?rows=0&start=0&q=app+AND+categoryId:20&fq=categoryId:20'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int>
<lst name="params"><str name="start">0</str><str name="q">app AND categoryId:20</str>
<str name="fq">categoryId:20</str><str name="rows">0</str></lst></lst>
<result name="response" numFound="69480" start="0"></result>
</response>
追加パラメータ&fq = categoryId:20を使用する点で異なりますが、ご覧のとおり、このフィルターはメインクエリにも存在し、結果に影響を与えないようにする必要があります。
応答を確認したところ、最初のリクエストで多くの重複が見つかりました。
また、タグには、categoryId=20の42236ドキュメントが表示されます。
では、なぜ&fq = categoryId:20でクエリを実行すると、非常に多くの(そして重複した)ドキュメントが返されるのでしょうか。PS他のすべてのカテゴリは正しく機能します。
スキームの一部:
<field name="id" type="int" indexed="true" stored="true" required="true"/>
<field name="title" type="text_general" indexed="true" stored="true" required="true"/>
<field name="description" type="text_general" indexed="true" stored="false" required="true"/>
<field name="categoryId" type="int" indexed="true" stored="false" required="true" multiValued="true"/>
<field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="true"/>
<field name="type" type="int" indexed="true" stored="false" required="true"/>