Lucene搜索返回相同的值两次

时间:2017-06-06 21:12:11

标签: solr lucene lucene.net

enter image description here以下是来自solr index的

的json响应
> <doc> <str name="longitudeCoordinate">11.2409</str> <str
> name="chainName">Pegasus Connect</str> <str
> name="currencyCode">EUR</str> <str name="entityType">hotelInfo</str>
> <str name="propertyName">BELLA VISTA</str> <str
> name="chainCode">UZ</str> <str name="marketerName">Pegasus
> Solutions</str> <str name="disableReasonId">A</str> <str
> name="propertyId">100003</str> <str name="marketerId">PEGASUS</str>
> <str name="propertyStatus">Inactive</str> <str
> name="latitudeCoordinate">43.77691</str> <str
> name="countryCode">ES</str> </doc>

为了回顾这些细节,我写了下面的lucene搜索,我构建了以下查询,

+entityType:hotelInfo +(propertyId:100003) +(marketerId:PEGASUS) +(chainCode:UZ) +(+propertyName:bella +propertyName:vista*) +(disableReasonId:P disableReasonId:C disableReasonId:A)

但它两次给出相同的结果。

if (hotelName != null) {
                StandardAnalyzer analyzer;
                analyzer = new StandardAnalyzer(Version.LUCENE_46);
                QueryParser queryParser = new QueryParser (Version.LUCENE_46, "propertyName", analyzer);
              //  queryParser.setAllowLeadingWildcard (true);
                queryParser.setDefaultOperator(QueryParser.Operator.AND);
                Query pNameQuery = null;
                try {
                    pNameQuery = queryParser.parse (hotelName + "*");

                } catch (ParseException e) {

                    e.printStackTrace ();
                } finally {
                    analyzer.close ();
                }
                hotelInfoQuery.add (pNameQuery, BooleanClause.Occur.MUST);
            }

我只添加了负责过滤property-name的部分。如果我得到哪部分代码可以创建多个结果并帮助纠正它,那将非常有用。

此致 拉加

1 个答案:

答案 0 :(得分:0)

我没有足够的声誉发表评论,因此必须回答。

首先,让我们确保您没有将相同的文档两次添加到索引中。 文档有Id。也打印文档ID。

如果两个文档具有不同的ID,则您已插入两次相同的文档。

如果Ids相同,我们将不得不深入挖掘。