Solr搜索fieldType

时间:2017-10-24 11:19:03

标签: solr

 <fieldType name="text_Pname_pl" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <filter class="solr.LowerCaseFilterFactory"/>
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      <filter class="solr.HyphenatedWordsFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="lang/stopwords_pl.txt" ignoreCase="true"/>
    </analyzer>
  </fieldType>

我的字段看起来像这样。我有像全文搜索的字段,但也有exacly搜索。 现在它的工作如下:

  • 新闻 - &gt;工作正常新闻(没有新闻-19:00或新闻_...)
  • 新闻* ---&gt;工作正常News_sport ... - “新闻 - 体育*”---&gt;所有新闻 - 运动都很好......

现在出问题。

  • 无法找到“新闻+体育”只有新闻*“新闻+ s *”(不工作)

    如何搜索带空格的字符串。我看到当我使用小写和空格时,我有OR而不是AND。 谢谢你的帮助。

实施例 我的约会:新闻,新闻+体育,新闻17:15,新闻18:00

  • 当我按“新闻”搜索时 - &gt;我只想要新闻
  • News1 * - &gt;必须给我新闻17:15和新闻18:00
  • 新闻告诉我所有新闻都在字符串中。

1 个答案:

答案 0 :(得分:0)

您正在使用KeywordTokenizerFactory,因此整个短语将被视为单个令牌,您可以看到here

这就是为什么你无法找到与你的令牌/短语不同的单词的原因。 如果您在没有&#39; *&#39;的情况下进行搜索,则只返回完全匹配的令牌。

如果你想搜索分隔的单词,也许你应该使用另一个标记器(例如StandardTokenizerClassicTokenizer)。