Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何在SOLR中实现带日期的邻近搜索_Date_Solr_Lucene_Range_Proximity - Fatal编程技术网

Date 如何在SOLR中实现带日期的邻近搜索

Date 如何在SOLR中实现带日期的邻近搜索,date,solr,lucene,range,proximity,Date,Solr,Lucene,Range,Proximity,我有一个用例,我想搜索文件内容中特定日期附近的单词。。 考虑该文件内容为“2011年月至2012日期间所得税共计2000美元”。 现在我的查询是“tax[20110101到20120201]”~4,我希望上面的文档能够对其进行查询。。 我使用查询解析器来处理复杂的邻近查询 那么,有谁能给我指出如何在Solr中实现这一点的正确方向。您是否尝试过在查询中使用正确的日期范围语法,并在索引时更改文档中的日期以使用该语法?如果我将日期索引到单独的日期字段,则在索引时更改日期的格式将起作用,但在这里,我希望

我有一个用例,我想搜索文件内容中特定日期附近的单词。。 考虑该文件内容为“2011年月至2012日期间所得税共计2000美元”。 现在我的查询是“tax[20110101到20120201]”~4,我希望上面的文档能够对其进行查询。。 我使用查询解析器来处理复杂的邻近查询


那么,有谁能给我指出如何在Solr中实现这一点的正确方向。

您是否尝试过在查询中使用正确的日期范围语法,并在索引时更改文档中的日期以使用该语法?如果我将日期索引到单独的日期字段,则在索引时更改日期的格式将起作用,但在这里,我希望将日期索引到与文件内容相同的字段中,以便邻近查询可以工作。这里的问题是,如果我通过将格式更改为相同的文本(文件内容)字段来索引日期,它们将按字典顺序排序,并且在文档和整个索引中可能会有更多的日期,这可能会在我要搜索任何日期附近的单词时,比如查询:“tax[1600011 2500101]”时,内存会被破坏(基本上是所有合理的日期)我还想通过保留偏移量将文件内容中的所有日期索引到一个单独的Solr.DateField,并使用该字段与文本字段进行近似搜索,类似于跨字段的近似查询,如“tax DateField:[1600101 2500101].”,但即使这样,当它尝试加载所有索引并比较它们的位置时,也会占用大量内存。那么,有没有更好的方法可以通过更少的内存消耗和更少的处理时间来实现这一点呢?也许你可以做的是在单独的字段中为日期编制索引,但在文件中保留一个标记,即在为文件编制索引时,用标记替换日期范围,并将开始日期和结束日期作为单独的字段编制索引。然后,您可以通过查询
+“tax”~4+startDateField:[*TO endDate]+endDateField:[startDate TO*]
进行近似搜索。希望这有帮助(并且有意义)。我不应该说不一定相关,但也不一定是你想要的。例如,如果你有一篇医学杂志文章,搜索“非洲疟疾”~5不一定会返回关于非洲疟疾的结果。它可能会返回类似“长期以来被认为局限于非洲的疟疾已经蔓延到美国”的结果这可能不是最终用户想要的。