小编Che*_*tya的帖子

solr faceted search - 如何在Solr Query UI上指定多个字段?

我是一个新手来解决并将我的双手绑在solr上.有人可以在这里解释如何为给定的搜索指定多个facet字段.

我正在使用Solr Admin UI /查询墨水,它允许我只指定一个字段.然而,我想在我的公司搜索上面对多个领域,如地区行业股票交易所等.

我已经浏览了solr wiki和相关文档链接,如下面的 http://docs.lucidworks.com/display/solr/Query+Screen

但它们似乎都没有解释如何指定多个字段.我想构建类似于通常的亚马逊/沃尔玛等搜索UI,它提供多个方面,并在尝试在我计划的公司搜索页面上搜索产品时计数.

solr facet faceted-search

8
推荐指数
1
解决办法
3万
查看次数

XPath选择不同命名空间中的节点

我需要一些帮助来提出一个适当的XPath表达式来从XML中提取值.

我可以使用jaxb获取值,但是我需要xpath,因为我有一个决策表类型的映射规则,我想要外部化,如果我使用jaxb将导致很多嵌套的if/else语句,我想避免,因此需要xpath方法.

我有一个xml文件,至少有4个模式构建.我的意思是根模式在特定点有一个元素,表示xs:any,在这个位置注入一个基于不同模式的xml,这反过来又有一个类似的xs:any注入另一个xml来构建final /我使用的实际xml.

这是我正在处理的实际XML结构(我故意修改了值).下面xml中的两个Document节点基于不同的模式

<?xml version="1.0"?>
<env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="CDTS-SUBMIT">
  <env:Body>
    <cdtPrefix>
      <cdtprVersion>01</cdtprVersion>
      <cdtprOperation>SUBMIT</cdtprOperation>
      <cdtprFunction>GCAMS1O</cdtprFunction>
      <cdtprDirectionFlag>O</cdtprDirectionFlag>
    </cdtPrefix>
    <cdtDataDescription>
      <cdtddVersion>01</cdtddVersion>
      <cdtddFirmId>ABC</cdtddFirmId>
      <cdtddBusinessDataFormat>GCAMS1O-XML</cdtddBusinessDataFormat>
      <cdtddReferenceNum>123</cdtddReferenceNum>
      <cdtddTrackingNum>123</cdtddTrackingNum>
      <cdtddDestination>AQ</cdtddDestination>
      <cdtddSeqNum>0000000</cdtddSeqNum>
      <cdtddCycleNum>00</cdtddCycleNum>
      <cdtddBusinessDate>00000000</cdtddBusinessDate>
    </cdtDataDescription>
    <cdtBusinessData>
      <AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Fr>
          <FIId>
            <FinInstnId>
              <BICFI>ABC</BICFI>
            </FinInstnId>
          </FIId>
        </Fr>
        <To>
          <FIId>
            <FinInstnId>
              <BICFI>ABC   </BICFI>
            </FinInstnId>
          </FIId>
        </To>
        <BizMsgIdr>ABC</BizMsgIdr>
        <MsgDefIdr>seev.031.002.05</MsgDefIdr>
        <BizSvc>CSD</BizSvc>
        <CreDt>9999-99-99T00:02:17Z</CreDt>
      </AppHdr>
      <Document xmlns="urn:swift:xsd:seev.031.002.05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <CorpActnNtfctn>
          <NtfctnGnlInf>
            <NtfctnTp>REPL</NtfctnTp>
            <PrcgSts>
              <Cd>
                <EvtCmpltnsSts>COMP</EvtCmpltnsSts>
                <EvtConfSts>CONF</EvtConfSts>
              </Cd>
            </PrcgSts>
          </NtfctnGnlInf>
          <PrvsNtfctnId>
            <Id>00000000</Id>
          </PrvsNtfctnId>
          <EvtsLkg>
            <EvtId>
              <LkdOffclCorpActnEvtId>US8</LkdOffclCorpActnEvtId>
            </EvtId>
            <LkgTp>
              <Cd>INFO</Cd>
            </LkgTp>
          </EvtsLkg>
          <CorpActnGnlInf>
            <CorpActnEvtId>000</CorpActnEvtId>
            <OffclCorpActnEvtId>US7</OffclCorpActnEvtId> …
Run Code Online (Sandbox Code Playgroud)

xml xpath jxpath

1
推荐指数
1
解决办法
1950
查看次数

主线程完成后,Reactor Schedulers 继续运行很长时间?如何处理?

我有一个关于如何在使用 Reactor 3 时清理调度程序工作线程的问题

Flux.range(1, 10000)
.publishOn(Schedulers.newElastic("Y"))
.doOnComplete(() -> { 
    // WHAT should one do to ensure the worker threads are cleaned up
    logger.info("Shut down all Scheduler worker threads");
})
.subscribe(x -> logger.debug(x+ "**"));
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,我看到的是,一旦主线程完成运行,工作线程在一段时间内仍处于 WAITING 状态。

sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)

有没有办法控制这个?也就是说,它们可以被处理掉onComplete()吗?我试过了Schedulers.shutdownNow(),但没有帮助。

另一方面,当我这样做时,我能够控制调度程序的处理。哪种是首选/提倡的方式?

reactor.core.scheduler.Scheduler s = Schedulers.newElastic("X");
        Flux.range(1, 10000)
        .concatWith(Flux.empty())
        .publishOn(s)
        .doOnComplete(() -> {           
            s.dispose();
            logger.info("Shut down all Scheduler worker threads");
        })
        .subscribe(x -> logger.debug(x+ "**"));
Run Code Online (Sandbox Code Playgroud)

java project-reactor

1
推荐指数
1
解决办法
3632
查看次数

标签 统计

facet ×1

faceted-search ×1

java ×1

jxpath ×1

project-reactor ×1

solr ×1

xml ×1

xpath ×1