我已经开始学习Solr,并试图像我在mysql中所做的那样理解和实现相同的查询,以相同的顺序和逻辑返回结果。
我需要的:
默认的mysql示例查询/不带搜索参数:
SELECT
*
FROM
postings Postings
// LEFT JOIN query ..
WHERE
(
// where query..
)
ORDER BY
Postings.premium DESC, // <--- bool (1),
FIELD(Postings.source, "local") DESC,
Postings.cpc DESC
Run Code Online (Sandbox Code Playgroud)
和带有搜索参数的示例:
SELECT
MATCH (Postings.title) AGAINST ('developer' IN BOOLEAN MODE) AS `Postings__relavance_title`,
MATCH (Postings.description) AGAINST ('developer' IN BOOLEAN MODE) AS `Postings__relavance_description`,
// other Fields
FROM
postings Postings
// LEFT JOIN queries ...
WHERE
(
MATCH (
Postings.title, Postings.description
) AGAINST ('developer' IN BOOLEAN MODE)
)
ORDER BY
(Postings__relavance_title * 2)+ Postings__relavance_description DESC,
Postings.premium DESC, // <--- bool (1)
FIELD(Postings.source, "local") DESC,
Postings.cpc DESC
Run Code Online (Sandbox Code Playgroud)
如何以相同方式对Solr数据进行排序/排序?
这是我们任务的解决方案:
我们必须:
选择字段,例如:
fl=score,*
Run Code Online (Sandbox Code Playgroud)
增强查询字段,例如:
bq=source:local^50 (premium:true^100 OR premium:false^0)
Run Code Online (Sandbox Code Playgroud)
并按分数排序:
sort=score DESC, created DESC
Run Code Online (Sandbox Code Playgroud)
在solr 模式中:
<field name="premium" type="boolean" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |