[英]SOLR Solarium can we use filter-queries with dismax-queries?
我剛剛構建了一個由 solr 支持的搜索表單,我們正在使用日光浴室庫來構建我們的請求。
我們建立了一個“巨大”的過濾器查詢集合,就像那個:
$query = $client->createQuery($client::QUERY_SELECT);
$query->setStart(0)->setRows(1000);
$query->addFilterQuery($query->createFilterQuery("foo")->setQuery("bar:true"));
$query->addFilterQuery($query->createFilterQuery("fo")->setQuery("ba:false"));
....
但我們意識到搜索只是命中了我們在過濾器查詢中指定的所有單個字段,但我們實際上必須查詢多個字段。 在閱讀文檔時我意識到我們可能錯了,對吧? 正確的方法是使用 disMax 查詢(結合構面?)? 我想知道,我們是否可以將 DisMax 與 filterqueries 結合使用以將我們的搜索“擴展”到多個字段(帶有提升)? 還是我們必須實際返工所有內容?
我有點錯過了決定最佳/可行解決方案的大局
非常感謝幫助
編輯:
solr:
solr-spec 7.6.0
日光浴室:
solarium/solarium 6.0.1 PHP Solr client
您可以在提供fq
參數時提供查詢解析器:
fq={!dismax qf="firstfield secondfield^5"}this is my query
該語法稱為局部參數。 由於dismax
(或您現在通常應該使用的edismax
)前面沒有標識符,因此它被隱式解析為類型。
如果局部參數值出現時沒有名稱,它會被賦予隱式名稱“type”。 這允許在解析查詢字符串時使用查詢解析器類型的短格式表示。
您必須確保 Solarium 不會轉義您給setQuery
的值,但是由於您已經提供了一個field:value
組合,所以它似乎沒有轉義。 仔細檢查 Solr 日志以查看發送到 Solr 的確切查詢(或者如果可能的話請 Solarium 為您提供發送的確切查詢字符串)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.