【问题标题】:Does not working less than operator in solr query在 solr 查询中不小于运算符
【发布时间】:2014-04-16 12:02:55
【问题描述】:

我使用 solr4.7 和 CoreContainer 创建核心,使用 EmbeddedSolrServer 进行连接,使用 ModifiableSolrParams 获取数据..

我已经配置了 "solrconfig.xml" 和 requestHelper "import" 来导入数据和其他配置文件进行数据配置如下......

    <dataConfig>
        <dataSource driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/koupon"
            user="root"
            password="root" />
        <document>
            <entity name="koupon" 
                query="SELECT k.kouponid as kid, k.name, k.image,k.description,k.discount as discount,
    k.startdate,k.enddate,k.actualamount,
    k.discountamount,k.discountamount, c.name as category
    FROM koupon.koupon k
    INNER JOIN koupon.category c on c.categoryid = k.categoryid
    where 

k.startDate = NOW()

AND c.isActive=true AND c.isDeleted=false AND k.isActive =true AND lower(k.status)=lower('approved')
    order by k.kouponid">

                <field column="kid" name="kid"/>
                <field column="name" name="name"/>
                <field column="image" name="image"/>
                <field column="description" name="description"/>
                <field column="startdate" name="startdate"/>
                <field column="enddate" name="enddate"/>
                <field column="actualamount" name="actualamount"/>
                <field column="discountamount" name="discountamount"/>
                <field column="discount" name="discount"/>
                <field column="category" name="category"/>
            </entity>
        </document>
    </dataConfig>

在此代码中,使用 "k.startDate &lt;= NOW() and endDate &gt;= NOW()" 在记录之间获取,但 solr 查询不提供此功能。

我有一个解决方案,开始“到”结束,但这不是确切的解决方案..

我对这个问题感到非常厌倦,有人知道吗?如何解决这个问题?

【问题讨论】:

  • 您是遇到错误还是没有结果?
  • 当我使用“k.startDate = NOW()” 时出现错误,例如与元素类型“实体”关联的属性“查询”的值不得包含“

标签: java mysql solr solrj


【解决方案1】:

您可以尝试使用这个 mysql 查询进行索引:

WHERE (NOW() BETWEEN k.startDate and k.endDate)

代替:

k.startDate <= NOW() and endDate >= NOW()

防止出错

与元素类型关联的属性“查询”的值 “实体”不得包含“

对于您的 Solr 查询

startdate:[* to NOW]

要工作,请确保您的 startdate 字段符合 Solr dateField 类型。有关这方面的更多信息,请查看this 链接

【讨论】:

  • "WHERE (NOW() BETWEEN k.startDate and k.endDate)" 这个代码对我有用。但是这里需要括号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多