Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Search Solr-Solr.TextField上的精确匹配_Search_Solr_Lucene - Fatal编程技术网

Search Solr-Solr.TextField上的精确匹配

Search Solr-Solr.TextField上的精确匹配,search,solr,lucene,Search,Solr,Lucene,是否有一种切实可行的方法来对带词干的全文字段进行精确匹配搜索? 我有一个场景,我需要一个字段被索引和搜索,无论大小写或空格使用。 即使在索引和查询上都使用关键字TokenizerFactory,我所有基于精确匹配的搜索都停止了工作。 有没有一种方法可以像字符串字段一样搜索精确匹配,同时使用应用于该字段的自定义标记器? 我在下面发布了我当前使用的模式: <field name="subtipoimovel" type="buscalimpaquery" indexed="true" stor

是否有一种切实可行的方法来对带词干的全文字段进行精确匹配搜索? 我有一个场景,我需要一个字段被索引和搜索,无论大小写或空格使用。 即使在索引和查询上都使用关键字TokenizerFactory,我所有基于精确匹配的搜索都停止了工作。 有没有一种方法可以像字符串字段一样搜索精确匹配,同时使用应用于该字段的自定义标记器? 我在下面发布了我当前使用的模式:

<field name="subtipoimovel" type="buscalimpaquery" indexed="true" stored="true" />

<fieldType name="buscalimpaquery" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.ASCIIFoldingFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PatternReplaceFilterFactory" pattern=" " replacement="-"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
      </analyzer>

问候,,
西尔维奥·朱利安尼(Silvio Giuliani)

问题是,在索引时,您使用的是关键字TokenizerFactory、ASCIIFoldingFilterFactory、LowerCaseFilterFactory和PatternReplaceFilterFactory,而在查询时,您使用的是关键字TokenizerFactory。这对精确匹配不起作用。
您需要将它们视为流水线处理器。你也需要在查询时间内进行“相似”的处理。

正如SRiknTH在评论中提到的,你应该考虑把两种不同的术语分析分成两个不同的领域。另请参见我对一个功能类似问题的回答:。

问题显然是这个标记器:

“solr.KeywordTokenizerFactory”

我把它改为StandardTokenizerFactory,现在它可以精确匹配

我在上阅读了KeywordTokenizerFactory的描述,在我看来,要实现精确匹配,我应该使用它而不是StandardTokenizerFactory


有人知道为什么会发生这种情况吗?

可以使用两个字段吗?一个用于词干文本,另一个用于精确匹配?i、 e.两个字段
subtipoimevel
subtipoimevel_确切的
?Srikanth的建议是实现这一点的常规方法。