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
Solr 单数与连字符数_Solr_Hyphen - Fatal编程技术网

Solr 单数与连字符数

Solr 单数与连字符数,solr,hyphen,Solr,Hyphen,我有一个连字符91-21-22020-4的号码 我的问题是,即使连字符在数字字符串中移动,我也希望点击。现在是91212202-4,它会打一次,但91212202-04不会 调试信息如下所示: "debug": { "rawquerystring": "91212202-04", "querystring": "91212202-04", "parsedquery": "+((freetext:91212202 freetext:9121220204)/no_coord) +freetext:0

我有一个连字符91-21-22020-4的号码

我的问题是,即使连字符在数字字符串中移动,我也希望点击。现在是91212202-4,它会打一次,但91212202-04不会

调试信息如下所示:

"debug": {
"rawquerystring": "91212202-04",
"querystring": "91212202-04",
"parsedquery": "+((freetext:91212202 freetext:9121220204)/no_coord) +freetext:04",
"parsedquery_toString": "+(freetext:91212202 freetext:9121220204) +freetext:04",
"explain": {},
"QParser": "LuceneQParser",
<fieldType name="text_indexed" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.HyphenatedWordsFilterFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" catenateAll="0"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-index.txt"/>
            <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" catenateAll="0"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-index.txt"/>
        </analyzer>
    </fieldType>

My schema.xml看起来像:

"debug": {
"rawquerystring": "91212202-04",
"querystring": "91212202-04",
"parsedquery": "+((freetext:91212202 freetext:9121220204)/no_coord) +freetext:04",
"parsedquery_toString": "+(freetext:91212202 freetext:9121220204) +freetext:04",
"explain": {},
"QParser": "LuceneQParser",
<fieldType name="text_indexed" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.HyphenatedWordsFilterFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" catenateAll="0"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-index.txt"/>
            <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" catenateAll="0"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-index.txt"/>
        </analyzer>
    </fieldType>

在Solr中为连字符编制索引之前,请使用删除连字符的所有痕迹(或使用更改存储的标记而不是索引的文本)


91212202-04
将被索引(和搜索)为
9121220204
,这将有效地消除对连字符的任何依赖性。

但是当我运行analyze时,9121220204是否已经被索引和搜索?我就是搞不懂为什么连字符的位置对搜索结果很重要?好吧,你查询末尾的“+freetext:4”要求匹配一个只有4或04的标记,这使得一个命中,另一个不命中。使用“分析”页面查看每个步骤中的转换。在进一步调试之前,删除不需要的过滤器也是一个好主意(您有一个连字符过滤器、一个mappingcharfilter和一个worddelimiterfilter,可能会更改输入)。好的,完成了。。