導航:首頁 > 凈水問答 > solr查詢結果過濾

solr查詢結果過濾

發布時間:2023-03-24 07:34:11

❶ 如何使solr查詢結果帶score

一、 查詢參數說明
在做solr查詢的時候,solr提供了很多參數來擴展它自身的強大功能!以下是使用頻率最高的一些參數!
1、常用
q - 查詢字元指賣串,這個是必須的。如果查詢所有*:* ,唯帶逗根據指行殲定欄位查詢(Name:張三 AND Address:北京)
fq - (filter query)過慮查詢,作用:在q查詢符合結果中同時是fq查詢符合的,例如:q=Name:張三&fq=CreateDate:[20081001 TO 20091031],找關鍵字mm,並且CreateDate是20081001
fl - 指定返回那些欄位內容,用逗號或空格分隔多個。

❷ 如何大幅優化solr的查詢性能

提升軟體性能,通常喜歡去調整各種啟動參數,這沒有多大意義,小伎倆。 性能優化要從架構和策略入手,才有可能得到較大的收益
Solr的查詢是基於Field的,以Field為基本單元,例如一個文章站要索引
classArticle

{

String title;

String content;

String tags;

}

查詢參數: q=title:big && content:six
Solr會順序執行兩次 field查詢 ,這個開銷非常大。 實際例子 :50萬條記錄,一次在6,7個欄位上檢索,24 core的伺服器也需要10-20ms
如果把title和content 合並,那隻需要查詢一次,性能可以提升50%
在生成索引xml的時候,把title和content填入同一個欄位,就能達到這種效果,但是產生新的問問題
無法對title和content的查詢分別指定權重了,一般來說,title的權重要高於content
Solr給出一種解決方法:在schema中使用 Field
上述的纖空Article Schema可以寫成如下這種格式,就能達到效果
<fieldname="title"type="text_general"indexed="true"stored="true"/>
<fieldname="content"type="text_general"indexed="true"stored="true"/>
<fieldname="tags"type="text_general"indexed="true"stored="true"/>
<fieldname="text"type="text_general"indexed="true"stored="false"multiValued="true"/>
<Fieldsource="title"dest="text"/>
<Fieldsource="content"dest="text"/>
<Fieldsource="tags"dest="text"/>此備
這種schema定義方式,既可以對單個field指定查詢權重森豎毀,也可以在泛查詢的時候提升性能,同時生成索引數據的時候不需要多寫任何代碼

❸ solr不能過濾負數嗎,為什麼12345都可以,但是fq=id:-1就報錯呢

Esoir不能過濾負數嗎為什麼12345都可以但是fg=ID冒號減一就報錯呢這是演算法算錯了

❹ Solr的使用 — 檢索

本文是延續 Solr的使用 系列,前一篇文章已經講了 Solr 的部署和數據推送,這里主要以示例方式講述 Solr 的常見查詢語法,同時介紹如何使用 PHP 語言的客戶端 solarium 同 Solr 集群進行數據交互。

想要詳細地了解 Solr 查詢語法,可參考 官方wiki 。

用於示例的數據,我已經推送到了 Solr , 見這里 。數據 Core 為 rooms,數據格式形如:

通過向 Solr 集群 GET 請求 /solr/core-name/select?query 形式的查詢 API 完成查詢,其中 core-name 為查詢的 Core 名稱。查詢語句 query 由以下基本元素項組成,按使用頻率先後排序:

wt 設置結果集格式,支持 json、xml、csv、php、ruby、pthyon,序列化的結果集,常使用 json 格式。

fl 指定返回的欄位,多指使用「空格」和「,」號分埋蔽雹割,但只支持設置了 stored=true 的欄位。 * 表示返回全部欄位,一般情況不需要返迴文檔的全部欄位。

欄位別名 :使用 displayName:fieldName 形式指定欄位的別名,例如:

函數 :fl 還支持使用 Solr 內置函數 ,例如根據單價算總價:

fq 過濾彎帆查詢條件,可充分利用 cache,所以可以利用 fq 提高檢索性能。

sort 指定結果集的排序規則,格式為 <fieldName>+<sort> ,支持 asc 和 desc 兩種排序規則。例如按照價格倒序排列:

也可以多欄位排序,價格和面積排序:

查詢字元串 q 由以下元素項組成,欄位條件形如 fieldName:value 格式:

以上元素項的默認值由 solrconfig.xml 配置文件定義。通常查詢時設置 q=*:* ,然後通過 fq 過濾條件來完成查詢,通過緩存提高查詢性能。

Solr 的模糊查詢使用佔位符來描述查詢規則,如下:

查詢小區名稱中包含「嘉」的房源信息:

Solr 的模糊查詢為:

單精確值查詢是最簡單的查詢,類似於 SQL 中 = 操作符。查詢小區 id 為 1111027377528 的房源信息:

Solr 中查詢為:

多精確值查詢是單精確值查詢的擴展,格式為 (value1 value2 ...) ,功能類似於 SQL 的 IN 操作符。查詢小區 id 為 1111027377528 或者 1111047349969 的房源信息:

Solr 中查詢為:

范圍查詢是查詢指定范圍的值(數字和時間),格式為 [value1 TO value2] ,類似於 SQL 的 BETWEEN 操作符。查詢價格在 [2000, 3000] 的房源信息:

Solr 中范圍查詢為:

幾個特殊的范圍查詢:並渣

將基本查詢結合布爾查詢,就可以實現大部分復雜的檢索場景。布爾查詢支持以下幾種布爾操作:

查詢北京市價格區間在 [2000, 3000] 或者上海市價格區間在 [1500, 2000] 的房源信息:

轉換為邏輯與布爾查詢:

在實際中分組查詢比較常見,當然 Solr 也支持分組查詢。分組查詢語句由以下基本元素項組成(常用部分):

查詢西二旗內價格最便宜小區的房源信息:

Group 分組查詢為:

結果為:

在大多數情況下,Group 分組已經能滿足我們的需求,但是如果待分組欄位為多值,Group 分組已經無能為力了,這時使用 Facet 就能輕松解決。

Solr 的 Facet 語句由以下基本元素構成(常用):

例如,統計每個商圈的房源分布情況並倒序排列,由於 bizcircleCode 欄位為多值,Facet 查詢為:

結果如下:

Solr 的 geofilt 過濾器可以實現 LBS 檢索,但要在 schema.xml 配置中將需檢索欄位的欄位類型設置為 solr.LatLonType 類型。geofilt 過濾器參數列表如下:

示例中的 location 欄位,值為 「40.074203,116.315445」,類型配置為:

則檢索坐標點 40.074203,116.315445 附近 2 公里的房源信息:

Solr 提供一些函數以實現邏輯或數學運算。其中常用 數學運算 函數列表如下:

常用的 邏輯運算 函數:

這些函數可以使用在返回值或者查詢條件上。例如返回每個房源的每平方米價格信息:

PHP 可以使用 solarium 客戶端,實現 Solr 數據源的檢索,詳細使用說明 見這里 。

solarium 客戶端需要配置 Solr 的基本信息。如下:

solarium 提供的查詢方法較豐富,整理後如下表所示:

查詢北京市的所有房源信息,如下:

solarium 提供的分組查詢方法如下表所示(常用):

獲取西二旗每個小區的房源分布信息,如下:

solarium 提供的 Facet 查詢方法,如下表(常用):

獲取北京市每個商圈的房源分布信息,如下:

到這里,Solr 系列就整理完畢了,未涉及的部分後續接觸時再補充。這兩天利用休息時間充電,自己在 Solr 方面的技能也算是上了一個台階了。

❺ 求助:solr如何通過指定條件修改數據

修改主方法
public int saveContent(String enterpriseId, String enterpriseName, String lableType, String resouce, String pubDate,
String content) {

int state = 0;
LBHttpSolrServer server = SolrUtil.getSolrServer(ap.getEnterprisenewSolrUrl());
SolrQuery query = new SolrQuery();
query.set("q", "enterpriseId:" + enterpriseId);
try {
QueryResponse qr = server.query(query);
List<EnterpriseContentBean> contentList = qr.getBeans(EnterpriseContentBean.class);
// 設置需要保存的文章信息
for (EnterpriseContentBean bean : contentList) {
bean.setEnterpriseId(enterpriseId);
bean.setEnterpriseName(enterpriseName);
List<String> contents = new ArrayList<String>();
contents.add(content);
bean.setContent(contents);
bean.setPubDate(pubDate);
System.out.println("pubDate======>" + pubDate);
List<String> lableTypes = Arrays.asList(lableType.split(","));

bean.setLableType(lableTypes);
bean.setResource(resouce);
bean.setIsVisited_s("1");
}

server.addBeans(contentList);
server.commit();

} catch (SolrServerException e) {
state = 1;
System.out.println("修改solr數據報錯");
e.printStackTrace();
} catch (IOException e) {
state = 1;
System.out.println("修改solr數據報錯");
e.printStackTrace();
}
return state;

}

刪除主方法
public int deletContent(String enterpriseId) {

LBHttpSolrServer server = SolrUtil.getSolrServer(ap.getEnterprisenewSolrUrl());
int state = 0;
try {
server.deleteById(enterpriseId);
server.commit();

} catch (SolrServerException e) {
state = 1;
System.out.println("刪除solr數據報錯");
e.printStackTrace();
} catch (IOException e) {
state = 1;
System.out.println("刪除solr數據報錯");
e.printStackTrace();
}

return state;
}

solr工具類
package com.dinfo.boc.utils;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.LBHttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import com.dinfo.boc.enterprise.bean.EnterpriseContentBean;
import com.dinfo.boc.enterprisenew.bean.SolrQueryResult;

/**
* 與Solr伺服器交互的工具類
* @author qiuyj
*
*/
public class SolrUtil {

/**
* 獲取與指定Solr地址的連接
* @param solrUrl
* @return
*/
public static LBHttpSolrServer getSolrServer(String solrUrl){
final int ONE_HUNDRED_MS = 10000000;

if(solrUrl == null || "".equals(solrUrl)){
throw new RuntimeException("Solr url can not be empty!");
}

LBHttpSolrServer solrServer = null;
try {
solrServer = new LBHttpSolrServer(solrUrl);
solrServer.setConnectionTimeout(ONE_HUNDRED_MS);
} catch (MalformedURLException e) {
e.printStackTrace();
} //SolrUtil.getSolrServer(solrUrl);

//solrServer.(100);
//solrServer.setMaxTotalConnections(100);

return solrServer;
}

/**
* 向指定的Solr地址添加一條數據
* @param solrUrl
* @param doc
* @throws Exception
*/
public static void add(String solrUrl, SolrInputDocument doc) throws Exception {
if(doc == null){
throw new RuntimeException("SolrInputDocument object can not be null!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
solr.add(doc);
solr.commit();
}

/**
* 向指定的Solr地址用JavaBean添加一條數據
* @param solrUrl
* @param obj
* @throws Exception
*/
public static void add(String solrUrl, Object obj) throws Exception {
if(obj == null){
throw new RuntimeException("Object to be inserted can not be null!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
solr.addBean(obj);
solr.commit();
}

/**
* 向指定Solr地址批量添加數據
* @param solrUrl
* @param docs
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static void addAll(String solrUrl, Collection<? extends Object> objs) throws Exception {
if(objs == null){
throw new RuntimeException("Object collection can not be null!");
}
if(objs.size() == 0){
return;
}

LBHttpSolrServer solr = getSolrServer(solrUrl);

if(objs.iterator().next() instanceof SolrInputDocument){
solr.add((Collection<SolrInputDocument>)objs);
} else {
solr.addBeans(objs);
}
solr.commit();
}

/**
* 根據給定的id,從solr中刪除對應信息
* @param solrUrl
* @param ids
*/
public static void deleteByIds(String solrUrl, String ... ids) throws Exception {
if(ids == null || ids.length == 0){
throw new RuntimeException("Ids can not be empty!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
solr.deleteById(Arrays.asList(ids));
solr.commit();
}

public static void deleteByIds(String solrUrl, Integer ... ids) throws Exception {
if(ids == null || ids.length == 0){
throw new RuntimeException("Ids can not be empty!");
}

List<String> stringIdList = new ArrayList<>(ids.length);
for(Integer id : ids){
stringIdList.add("" + id);
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
solr.deleteById(stringIdList);
solr.commit();
}

/**
* 刪除指定Solr路徑下符合指定查詢條件的數據
* @param solrUrl
* @param condition
* @throws Exception
*/
public static void deleteByCondition(String solrUrl, String condition) throws Exception {
if(condition == null || "".equals(condition)){
throw new RuntimeException("Condition can not be empty!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
solr.deleteByQuery(condition);
solr.commit();
}

/**
* 刪除指定Solr路徑下的所有數據
* @param solrUrl
* @throws Exception
*/
public static void deleteAll(String solrUrl) throws Exception {
deleteByCondition(solrUrl, "*:*");
}

/**
* 根據 指定查詢條件從Solr中查詢數據,並以SolrDocument的List形式返回
* @param solrUrl
* @param query
* @return
* @throws Exception
*/
public static SolrDocumentList queryAndGetSolrDocumentList(String solrUrl, SolrQuery query) throws Exception {
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
QueryResponse resp = solr.query(query);
return resp.getResults();
}

/**
* 根據 指定查詢條件從Solr中查詢數據,並以QueryResponse形式返回
* @param solrUrl
* @param query
* @return
* @throws Exception
*/
public static QueryResponse queryAndGetSolrQueryResponse(String solrUrl, SolrQuery query) throws Exception {
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
QueryResponse resp = solr.query(query);
return resp;
}

/**
* 根據 指定查詢條件從Solr中查詢數據,並以Java Bean的List形式返回
* @param solrUrl
* @param query
* @param returnClass 返回的List集合的泛型
* @return
* @throws Exception
*/
public static <T> List<T> queryAndGetBeanList(String solrUrl, SolrQuery query, Class<T> returnClass) throws Exception {
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
if(returnClass == null){
throw new RuntimeException("Return class can not be null!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
QueryResponse resp = solr.query(query);
return resp.getBeans(returnClass);
}

/**
* 根據 指定查詢條件從Solr中查詢數據,並以SolrQueryResult對象的形式返回,其中包含List對象和totalCount
* @param solrUrl
* @param query
* @param returnClass 返回的List集合的泛型
* @return
* @throws Exception
*/
public static <T> SolrQueryResult<T> queryAndGetSolrQueryResult(String solrUrl, SolrQuery query, Class<T> returnClass) throws Exception {
SolrQueryResult<T> result = new SolrQueryResult<T>();

if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
if(returnClass == null){
throw new RuntimeException("Return class can not be null!");
}

LBHttpSolrServer solr = getSolrServer(solrUrl);
solr.setConnectionTimeout(10000);
QueryResponse resp = solr.query(query);
List<T> resultList = resp.getBeans(returnClass);
long totalCount = resp.getResults().getNumFound();

result.setResultList(resultList);
result.setTotalCount(totalCount);

return result;
}

/**
* 根據 指定查詢條件從Solr中查詢數據,並以SolrQueryResult對象的形式返回,其中包含List對象和totalCount
* @param solrUrl
* @param query
* @param returnClass 返回的List集合的泛型
* @return
* @throws Exception
*/
public static <T> SolrQueryResult<T> queryAndGetSolrQueryResult(LBHttpSolrServer solr, SolrQuery query, Class<T> returnClass) throws Exception {
SolrQueryResult<T> result = new SolrQueryResult<T>();

if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
if(returnClass == null){
throw new RuntimeException("Return class can not be null!");
}

QueryResponse resp = solr.query(query);
List<T> resultList = resp.getBeans(returnClass);
long totalCount = resp.getResults().getNumFound();

result.setResultList(resultList);
result.setTotalCount(totalCount);

return result;
}

/**
* 用以過濾一些影響Solr查詢的特殊字元,如左右括弧、星號等
* @param str
* @return
*/
public static String filterSpecialCharacters(String str){
if(str == null){
return str;
}
str = str.replace("(", "\\(");
str = str.replace(")", "\\)");
str = str.replace("*", "\\*");
return str;
}

public static void updateSolrById(LBHttpSolrServer server){
SolrQuery query = new SolrQuery();
String id="";
int state=0;
String name="新疆金風科技股份有限公司";
query.set("q", "enterpriseId:"+id);
try {
QueryResponse qr = server.query(query);
List<EnterpriseContentBean> contentList = qr.getBeans(EnterpriseContentBean.class);
//設置需要保存的文章信息
for(EnterpriseContentBean bean:contentList){
// bean.setEnterpriseId(enterpriseId);
bean.setEnterpriseName(name);
bean.setResource("東方財富網港股頻道");
}

server.addBeans(contentList);
server.commit();

} catch (SolrServerException e) {
state = 1;
e.printStackTrace();
} catch (IOException e) {
state = 1;
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
=new LBHttpSolrServer("http://115.182.226.165:8008/solr/enterprisenew");
enterpriseServer.setConnectionTimeout(10000000);
updateSolrById(enterpriseServer);
System.out.println("over");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

❻ 教你使用solr搭建你的全文檢索

Solr 是一個可供企業使用的 基於 Lucene 的開箱即用的搜索伺服器 對Lucene不熟?那麼建議先看看下面兩篇文檔

實戰Lucene 第 部分 初識 Lucene lo lucene /

用Lucene加速Web搜索應用程序的開發 lucene /

一 solr介紹

solr是基於Lucene Java搜索庫的企業級全文搜索引擎 目前是apache的一個項目 它的官方網址在 solr需要運行在一個servlet 容器里 例如tomcat solr在lucene的上層提供了一個基於HTTP/XML的Web Services 我們的應用需要通過這個服務與兄斗祥solr進行交互

二 solr安裝和配置

關於solr的安裝和配置 這里也有兩篇非常好的文檔 作者同時也是 Lucene Java 項目的提交人和發言人

使用Apache Solr實現更加靈巧的搜索 solr /l

solr /l

下面主要說說需要注意的地方

Solr的安裝非常簡單 下載solr的zip包後解壓縮將dist目錄下的war文件改名為solr war直接復制到tomcat 的webapps目錄即可 注意一定要設置solr的主位置 有三種方法 我採用的是在tomcat里配置java p/env/solr/home的一個JNDI指向solr的主目錄(example目錄下) 建立/tomcat /conf/Catalina/localhost/solr xml文件

<Context docBase= D:/solr war debug= crossContext= true ><Environment name= solr/home type= java lang String value= D:/solr/solr override= true /></Context>

觀察這銷燃個指定的solr主位置 裡面存在兩個文件夾 conf和data 其中conf里存放了對solr而言最為重要的兩個配置文件schema xml和solrconfig xml data則用於存放索引文件

schema xml主要包括types fields和其他的一些預設設置

solrconfig xml用來配置Solr的一些系統屬性 例如與索引和查詢處理有關的一些常見的配置選項 以及緩存 擴展等等

上面的文檔對這兩個文件羨搏有比較詳細的說明 非常容易上手 注意到schema xml里有一個

<uniqueKey>url</uniqueKey>

的配置 這里將url欄位作為索引文檔的唯一標識符 非常重要

三 加入中文分詞

對全文檢索而言 中文分詞非常的重要 這里採用了qieqie庖丁分詞(非常不錯 )) 集成非常的容易 我下載的是 alpha 版本 其中它支持最多切分和按最大切分 創建自己的一個中文TokenizerFactory繼承自solr的BaseTokenizerFactory

/** * Created by IntelliJ IDEA * User: ronghao * Date: * Time: : : * 中文切詞 對庖丁切詞的封裝 */ public class ChineseTokenizerFactory extends BaseTokenizerFactory { /** * 最多切分 默認模式 */ public static final String MOST_WORDS_MODE = most words ; /** * 按最大切分 */ public static final String MAX_WORD_LENGTH_MODE = max word length ; private String mode = null; public void setMode(String mode) { if (mode==null||MOST_WORDS_MODE equalsIgnoreCase(mode) || default equalsIgnoreCase(mode)) { this mode=MOST_WORDS_MODE; } else if (MAX_WORD_LENGTH_MODE equalsIgnoreCase(mode)) { this mode=MAX_WORD_LENGTH_MODE; } else { throw new IllegalArgumentException( 不合法的分析器Mode 參數設置: + mode); } } @Override public void init(Map args) { super init(args); setMode(args get( mode )); } public TokenStream create(Reader input) { return new PaodingTokenizer(input PaodingMaker make() createTokenCollector()); } private TokenCollector createTokenCollector() { if( MOST_WORDS_MODE equals(mode)) return new MostWordsTokenCollector(); if( MAX_WORD_LENGTH_MODE equals(mode)) return new MaxWordLengthTokenCollector(); throw new Error( never happened ); } }

在schema xml的欄位text配置里加入該分詞器

<fieldtype name= text class= solr TextField positionIncrementGap= >

< *** yzer type= index >

<tokenizer class= ronghao fulltextsearch *** yzer ChineseTokenizerFactory mode= most words /><filter class= solr StopFilterFactory ignoreCase= true words= stopwords txt />

<filter class= solr WordDelimiterFilterFactory generateWordParts= generateNumberParts= catenateWords= catenateNumbers= catenateAll= />

<filter class= solr LowerCaseFilterFactory />

<filter class= solr />

</ *** yzer>

< *** yzer type= query >

<tokenizer class= ronghao fulltextsearch *** yzer ChineseTokenizerFactory mode= most words />

<filter class= solr SynonymFilterFactory synonyms= synonyms txt ignoreCase= true expand= true />

<filter class= solr StopFilterFactory ignoreCase= true words= stopwords txt />

<filter class= solr WordDelimiterFilterFactory generateWordParts= generateNumberParts= catenateWords= catenateNumbers= catenateAll= />

<filter class= solr LowerCaseFilterFactory />

<filter class= solr />

</ *** yzer>

</fieldtype>

完成後重啟tomcat 即可在

體驗到庖丁的中文分詞 注意要將paoding *** ysis jar復制到solr的lib下 注意修改jar包里字典的home

四 與自己應用進行集成

Solr安裝完畢 現在可以將自己的應用與solr集成 其實過程非常的簡單 應用增加數據——>根據配置的欄位構建add的xml文檔——>post至solr/update

應用刪除數據à根據配置的索引文檔唯一標識符構建delete的xml文檔——>post至solr/update

檢索數據à構建查詢xml—>get至/solr/select/——>對solr返回的xml進行處理——>頁面展現

具體的xml格式可以在solr網站找到 另外就是solr支持高亮顯示 非常方便

關於中文 solr內核支持UTF 編碼 所以在tomcat里的server xml需要進行配置

<Connector port= maxHttpHeaderSize= URIEncoding= UTF …/>

另外 向solr Post請求的時候需要轉為utf 編碼 對solr 返回的查詢結果也需要進行一次utf 的轉碼 檢索數據時對查詢的關鍵字也需要轉碼 然後用 + 連接

String[] array = StringUtils split(query null ); for (String str : array) { result = result + URLEncoder encode(str UTF ) + + ; }

lishixin/Article/program/Java/hx/201311/25984

❼ solr查詢某個欄位最大值,如何實現

q:查詢的關鍵字,此參數最為重要,例如,q=id:1,默認為q=*:*,類似於sql中的where 1=1。
fq(filter query):過濾查詢,提供一個可選的篩選器查詢。返回在q查詢符合結果中同時符合的fq條件的查詢結果,例如:q=id:1&fq=sort:[1 TO 5]&fq=section:0,找關鍵字id為1 的,並且sort是1到5之間,section=0的。還能寫成fq=+sort[1 TO 5] +section:0]。性能方面的考慮:每個fq下面的記錄都會單獨緩存。可以考慮把經常在一起的fq條件用+方式寫。
sort:排序方式,例如id desc 表示按照 「id」 降序。id desc, price asc先按id降序,再按price升序。sum(x_f, y_f) desc按x_f和y_f欄位的和降序。
start,rows:分頁參數,類似於start,limite的功能。啥都不輸的話默認值分別為start=0,limit=10。

❽ Solr的查詢結果去重

Group將具有公共欄位值的文檔進行分組,並返回每個組的頂部文檔(可以指定排序)。但是最終的結果是展示在 grouped 這個結果集中。

Collapsing 和 Expand 組件結合起來,可以在 Solr 搜索結果中根據指定欄位折疊,從而對文檔分組去重的效果。
Collapsing常規用法是寫在fq中,最簡單的啟用方式如下示例:

Collapsing功能是在每個shard搜索上進行折疊,但是在最終匯總結果時並沒有再次按照相應的折疊方式進行合並,導致可能出現的情況就是同一個分組出現多次。

在索引數據時使用路由,使用折攜租歲疊欄位作為路由欄位,這樣型弊就可以把具有相同值的文檔索引到同一個分片(但是這樣也有壞處,可能會導致索引數據分布不均,海量數據下影響不大)。

在創建collection時使用以下兩個辯睜參數

❾ solr怎麼設置才能像資料庫中的like模糊查詢

可以試握運試:
使用SolrQuery對象,
SolrQuery solrQuery = new SolrQuery();
//組裝查詢條件段前梁
solrQuery.setQuery("*:*");
String key = "java3";
solrQuery.addFilterQuery("content:" + "*"悔孫+key+"*" );試試吧

閱讀全文

與solr查詢結果過濾相關的資料

熱點內容
略陽有多少污水處理廠 瀏覽:393
mvr濃縮廢水如何處理 瀏覽:648
沁園凈水機燈不亮濾芯什麼時候換 瀏覽:628
先進凈水器哪個牌子好 瀏覽:114
污水滲透政府怎麼辦 瀏覽:112
樹脂氯超標是因為什麼原因 瀏覽:60
聚醯亞胺樹脂到羧基數量 瀏覽:520
賓館凈水器安裝在哪裡 瀏覽:428
蒸餾分餾干餾是石油中的嗎 瀏覽:128
污水藍色是什麼成分 瀏覽:216
當排放污水的水溫高於 瀏覽:753
電器除垢劑保質期 瀏覽:202
廢水是什麼范疇 瀏覽:98
樹脂久了變黃 瀏覽:893
坦克300的空調濾芯在哪裡 瀏覽:479
民權污水處理項目 瀏覽:41
樹脂多少度會軟 瀏覽:458
反滲透5年更換一次 瀏覽:618
三合一過濾泵有幾種 瀏覽:12
污水廠水質測定方法 瀏覽:248