Java 基于Solr规则的boost

Java 基于Solr规则的boost,java,solr,solrj,Java,Solr,Solrj,我正在使用Solr-5.0.0。我正在搜索一个字段产品名称。 我需要添加一些规则以获得相关结果 如果我搜索一个词,如果存在完全匹配的词,它应该排在第一位。 例如:如果我搜索笔记本电脑,它应该首先返回笔记本电脑的确切产品名称 如果我搜索多个单词,它应该遵守规则1。除了字长最短之外,距离最远的名字排在第一位。 例如:如果我搜索戴尔笔记本电脑,它应该首先返回戴尔笔记本电脑,而不是戴尔inspiron笔记本电脑 如果我搜索单词,它不应返回包含和或而不包含单词的结果。 例如:在搜索笔记本电脑包时,它不应该

我正在使用Solr-5.0.0。我正在搜索一个字段
产品名称
。 我需要添加一些规则以获得相关结果

  • 如果我搜索一个词,如果存在完全匹配的词,它应该排在第一位。 例如:如果我搜索
    笔记本电脑
    ,它应该首先返回笔记本电脑的确切
    产品名称

  • 如果我搜索多个单词,它应该遵守规则1。除了字长最短之外,距离最远的名字排在第一位。 例如:如果我搜索
    戴尔笔记本电脑
    ,它应该首先返回戴尔笔记本电脑,而不是戴尔inspiron笔记本电脑

  • 如果我搜索单词,它不应返回包含
    而不包含
    单词的结果。
    例如:在搜索
    笔记本电脑包时
    ,它不应该先给戴尔笔记本电脑带包或戴尔笔记本电脑不带包的结果

  • 如何在查询时获得这些基于规则的搜索相关结果


    我的应用程序是用java编写的,所以java answer很受欢迎。

    首先,您应该使用or查询解析器,而不是默认的()

    然后,可以使用不同的参数提高相关性:

  • :用于增强产品名称字段
  • :用于增强product_name字段,其中q参数中的所有术语显示得非常接近
  • :用于增强未显示单词
    with
    with
    的文档。例如:
    bq=(*:*-带-不带)^999