Solr:如何将一系列术语作为单个查询字符串传递给字段

时间:2017-04-03 16:57:31

标签: solr

我的字段类型定义如下:

<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
  <filter class="solr.LowerCaseFilterFactory"/>
  <filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>
<analyzer type="query">
  <tokenizer class="solr.StandardTokenizerFactory"/>
  <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
  <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
  <filter class="solr.LowerCaseFilterFactory"/>
  <filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="2"/>
</analyzer>

我想查询此类型的字段(名为passage_body),如下所示(例如):

  

q = passage_body :( DPGC召集人的任期)

问题在于在此字段中索引文本时,分析器工作得很好。但是,在查询时,如果我将debugQuery参数设置为true,我可以看到该字段未按预期分析(未形成带状疱疹)。这是调试输出:

<str name="rawquerystring">passage_body:(the term of dpgc convener)</str><str name="querystring">passage_body:(the term of dpgc convener)</str><str name="parsedquery">passage_body:term passage_body:dpgc passage_body:convener</str><str name="parsedquery_toString">passage_body:term passage_body:dpgc passage_body:convener</str>

当我在Solr admin中分析查询时,输出是预期的。 我甚至尝试将标准查询分析器的“母猪”查询参数设置为false,但即使这样也不起作用。

简而言之,这是我的最终查询:

http://localhost:8983/solr/mnitdocs/select?q=passage_body:(the term of dpgc convene)&sow=false&debugQuery=true

简而言之,我想将查询的带状疱疹与pass_body的带状疱疹相匹配。 请提出建议。其他建议也欢迎,因为我是索尔的新手。

我正在使用Solr 5.3.1。

1 个答案:

答案 0 :(得分:0)

我弄明白了这个问题。将查询参数“sow”设置为false可以正常工作。它只是在最新版本的solr(6.5.0)中可用。所以我切换到Solr 6.5.0。