solr java怎么solr 模糊查询很慢

13:04 提问
java通过solr查询hbase数据,如何自动映射到java实体类?
现在的情况是,使用simplehbase可以将查询结果自动映射到实体中,但simplehbase的过滤手段不如solr全面,能否将simplehbase与solr结合起来使用?如果可以,该怎么做呢?如果不可以,有没有办法可以达到以下目的?
1)可以模糊查询
2)查询出的结果自动映射到java实体类中
按赞数排序
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐>> solr的java客户端,对solrj进一步的封装,更方便操作solr
solr的java客户端,对solrj进一步的封装,更方便操作solr
所属分类:
下载地址:
solrclient-beta-0.1.1-jdk5.jar文件大小:20.25 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
solr的java客户端,对solrj进一步的封装,更方便操作solr。
主要功能:
对实体,SolrDocument,SolrInputDocument三者之间的状态任意的进行转换。
对commit,update,delete等等进行了封装,更简单的操作,同时提供了分页操作。
对SolrServer的获取更加的简单方便等等
暂时只是开发中,后续还有更多的新功能加入其中
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
aklixiaoyao这是一个机遇SOLR二次开发的组件,能够很好的解决javabean和solr对象之间的转化关系,从而可以实现复用,不用每次新建一个搜索对象就要写一套solr的实现代码
评价成功,多谢!
下载solrclient-beta-0.1.1-jdk5.jar
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:468.757ms - init:0.1;find:0.7;t:0.3;tags:19.8;related:357.4;comment:4.8; 27.69
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧Java对solr的增删改查操作讲解(附源码)
solr 安装配置完成后,如何在java代码中应用起来呢。
首先我们先创建一个类 solrUtils.java
____/`---'\____
' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
.&& '& `.___\_&|&_/___.' &'&&.
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
.............................................
写字楼里写字间,写字间里程序员;
程序人员写程序,又拿程序换酒钱。
酒醒只在网上坐,酒醉还来网下眠;
酒醉酒醒日复日,网上网下年复年。
但愿老死电脑间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员。
别人笑我忒疯癫,我笑自己命太贱;
不见满街漂亮妹,哪个归得程序员?
import java.io.IOE
import java.util.ArrayL
import java.util.C
import org.apache.commons.lang.StringU
import org.apache.log4j.L
import org.apache.solr.client.solrj.SolrC
import org.apache.solr.client.solrj.SolrServerE
import org.apache.solr.client.solrj.impl.HttpSolrC
import org.apache.solr.client.solrj.response.UpdateR
import org.apache.solr.common.SolrInputD
import com.jfinal.kit.PropK
import com.sunjs.kit.ToolsU
import com.sunjs.model.TBlogA
public class SolrUtils {
protected static final Logger LOG = Logger.getLogger(SolrUtils.class);
private final static String BASE_URL = &https://localhost:8983/solr/sunjs&;
* 创建SolrServer对象
* 该对象有两个可以使用,都是线程安全的 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的 2、
* EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了 3、solr
* 4.0之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient
public static SolrClient createSolrServer() {
return new HttpSolrClient.Builder(BASE_URL).build();
public static Integer addDucument(TBlogArticle article) {
if(article==null){
return 30850;
Collection&SolrInputDocument& docs = new ArrayList&SolrInputDocument&();
SolrInputDocument doc = new SolrInputDocument();
doc.addField(&id&, article.getLong(&id&));
doc.addField(&category_id&, article.getLong(&category_id&));
doc.addField(&uuid&, article.getStr(&uuid&));
doc.addField(&visit_num&, article.getInt(&visit_num&));
doc.addField(&pic_url&, article.getStr(&pic_url&));
doc.addField(&author&, article.getStr(&author&));
doc.addField(&tags&, article.getStr(&tags&));
doc.addField(&tags_name&, article.getStr(&tags_name&));
doc.addField(&title&, article.getStr(&title&));
doc.addField(&digest&, article.getStr(&digest&));
doc.addField(&add_time&, article.getDate(&add_time&));
docs.add(doc);
SolrClient solrClient = createSolrServer();
solrClient.add(docs);
UpdateResponse rspcommit = solrClient.commit();
return rspcommit.getStatus()==0?;
} catch (Exception e) {
e.printStackTrace();
LOG.info(ToolsUtils.print(&solr&,&索引失败&, article.getStr(&title&), e.getMessage()));
} finally{
LOG.info(ToolsUtils.print(&solr&,&索引成功&, article.getStr(&title&)));
solrClient.close();
} catch (IOException e) {
e.printStackTrace();
return 30850;
public static Integer deleteById(Object id) {
if(id!=null && StringUtils.isEmpty(id+&&)){
return 30892;
SolrClient solrClient = createSolrServer();
if(id.equals(&*&)){
//删除所有
// Preparing the Solr document
solrClient.deleteByQuery(&*&);
UpdateResponse rspcommit = solrClient.commit();
return rspcommit.getStatus()==0?;
solrClient.deleteById(id+&&);
UpdateResponse rspcommit = solrClient.commit();
return rspcommit.getStatus()==0?;
} catch (SolrServerException | IOException e) {
e.printStackTrace();
LOG.info(ToolsUtils.print(&solr&,&删除索引失败&, &ID:&+id, e.getMessage()));
} finally{
LOG.info(ToolsUtils.print(&solr&,&删除索引成功&, &ID:&+id));
solrClient.close();
} catch (IOException e) {
e.printStackTrace();
return 30892;
public static Page&TBlogArticle& queryFromSolr(Integer pageNumber, Integer pageSize, String reqparam) {
Page&TBlogArticle& page = new Page&TBlogArticle&();
if(StringUtils.isEmpty(reqparam)){
reqparam=&*&;
SolrQuery query = new SolrQuery();
query.setHighlight(true);
query.addHighlightField(&digest&);
query.addHighlightField(&title&);
query.setHighlightSimplePre(&&font color=\&red\&&&);
query.setHighlightSimplePost(&&/font&&);
query.setHighlightSnippets(1);
query.setHighlightFragsize(2);
query.setStart((pageNumber-1)*pageSize);
query.setRows(pageSize);
query.set(&q&, &title:&+reqparam+& OR &+&digest:&+reqparam);
List&TBlogArticle& articles = new ArrayList&TBlogArticle&();
SolrClient solrClient = createSolrServer();
QueryResponse response = solrClient.query(query);
SolrDocumentList docList = response.getResults();
Map&String, Map&String, List&String&&& highlightMap = response.getHighlighting();
Iterator&SolrDocument& it = docList.iterator();
while (it.hasNext()) {
SolrDocument doc = it.next();
Long id = Long.valueOf(doc.getFieldValue(&id&).toString());
Long category_id = Long.valueOf(doc.getFieldValue(&category_id&)==null?&0&:doc.getFieldValue(&category_id&).toString());
Integer visit_num = Integer.valueOf(doc.getFieldValue(&visit_num&)==null?&0&:doc.getFieldValue(&visit_num&).toString());
String uuid = doc.getFieldValue(&uuid&)==null?null:doc.getFieldValue(&uuid&).toString();
String pic_url = doc.getFieldValue(&pic_url&)==null?null:doc.getFieldValue(&pic_url&).toString();
String author = doc.getFieldValue(&author&)==null?null:doc.getFieldValue(&author&).toString();
String tags = doc.getFieldValue(&tags&)==null?null:doc.getFieldValue(&tags&).toString();
String tags_name = doc.getFieldValue(&tags_name&)==null?null:doc.getFieldValue(&tags_name&).toString();
String title = doc.getFieldValue(&title&)==null?null:doc.getFieldValue(&title&).toString();
String digest = doc.getFieldValue(&digest&)==null?null:doc.getFieldValue(&digest&).toString();
Date add_time = (Date)doc.getFieldValue(&add_time&);
TBlogArticle article = new TBlogArticle();
article.set(&id&, id);
article.set(&category_id&, category_id);
article.set(&uuid&, uuid);
article.set(&visit_num&, visit_num);
article.set(&pic_url&, pic_url);
article.set(&author&, author);
article.set(&tags&, tags);
article.put(&tags_name&, tags_name);
article.set(&title&, title);
article.set(&digest&, digest);
article.put(&title_html&, title);
article.put(&digest_html&, digest);
article.set(&add_time&, add_time);
List&String& titleList=highlightMap.get(id+&&).get(&title&);
List&String& digestList=highlightMap.get(id+&&).get(&digest&);
//获取并设置高亮的字段title
if(titleList!=null && titleList.size()&0){
article.put(&title_html&, titleList.get(0));
//获取并设置高亮的字段content
if(digestList!=null && digestList.size()&0){
article.put(&digest_html&, digestList.get(0));
articles.add(article);
Integer totalRow = Integer.valueOf(docList.getNumFound()+&&);
Integer totalPage = (int) (totalRow % pageSize == 0 ? totalRow / pageSize : Math.ceil((double)totalRow / (double)pageSize)) ;
page = new Page&TBlogArticle&(articles, pageNumber, pageSize, totalPage, totalRow);
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
solrClient.close();
} catch (IOException e) {
e.printStackTrace();
上边可能有部分类报异常,不过都无关紧要,主要代码都在。
如果查询出来的字段:doc.getFieldValue 是一个数组,也就是多列。那么只需要在配置文件中操作一下即可:
进入 /Users/sun/Documents/solr-6.5.1/server/solr/my_core/conf 这个目录下,打开managed-schema
找到是数组的列,比如是add_time:
增加multiValued=&false& 即可!
如何想要删除全部索引
SolrUtils.deleteById(&*&);
删除执行id 为 1 的索引
SolrUtils.deleteById(1);拒绝访问 | www.ggdoc.com | 百度云加速
请打开cookies.
此网站 (www.ggdoc.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(42e400dead7643e3-ua98).
重新安装浏览器,或使用别的浏览器solr java.lang.NullPointerException on select - Stack Overflow
to customize your list.
This site uses cookies to deliver our services and to show you relevant ads and job listings.
By using our site, you acknowledge that you have read and understand our , , and our .
Your use of Stack Overflow’s Products and Services, including the Stack Overflow Network, is subject to these policies and terms.
Join Stack Overflow to learn, share knowledge, and build your career.
or sign in with
I have recently started getting the error pasted below with solr-3.6 on /select queries.
I don't know of anything that changed in the config to start causing this error. I am also running a second independent solr server on the same machine, which continues to run fine and has the same configuration as the first one except for the port number.
The first one seems to be doing dataimport operations fine and updating index files as usual, but fails on select queries.
An example of a failing query (that used to run fine) is:
http://[machine_name]/solr/select/?q=title%3Afoo&version=2.2&start=0&rows=10&indent=on
I also found that I get this error only when the result set is non-empty. I am stupefied. Any idea?
HTTP ERROR 500
Problem accessing /solr/select/. Reason:
java.lang.NullPointerException
at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:398)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:186)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
I'm using the solrconfig.xml taken from the solr examples.
44.4k10117113
Know someone who can answer? Share a link to this
via , , , or .
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Post as a guest
Post as a guest
Post Your Answer
By clicking &Post Your Answer&, you acknowledge that you have read our updated ,
and , and that your continued use of the website is subject to these policies.
Browse other questions tagged
Stack Overflow works best with JavaScript enabled

我要回帖

更多关于 java模糊查询 的文章

 

随机推荐