【问题标题】:Wildcard searching and highlighting with Solr 1.4使用 Solr 1.4 进行通配符搜索和突出显示
【发布时间】:2011-01-25 17:12:12
【问题描述】:

除了一些小的配置和架构更改之外,我已经安装了 SOLR 1.4 的相当普通的安装。

<requestHandler name="standard" class="solr.SearchHandler" default="true">
    <!-- default values for query parameters -->
    <lst name="defaults">
        <str name="defType">dismax</str>
        <str name="echoParams">explicit</str>
        <str name="qf">
            text
        </str>
        <str name="spellcheck.dictionary">default</str>
        <str name="spellcheck.onlyMorePopular">false</str>
        <str name="spellcheck.extendedResults">false</str>
        <str name="spellcheck.count">1</str>
    </lst>
</requestHandler>

我用于索引的主要字段类型是这样的:

<fieldType name="textNoHTML" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <charFilter class="solr.HTMLStripCharFilterFactory" />
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
            />
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
            />
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
    </fieldType>

现在,当我使用

执行搜索时
"q=search+term&hl=on"

我得到了突出显示,并且得分非常准确。

但是,对于通配符,我假设您需要使用“q.alt”?真的吗?如果是这样,我的查询如下所示:

"q.alt=search*&hl=on"

当我使用上面的查询时,高亮不起作用,所有分数都是“1.0”。

我做错了什么?在不绕过一些非常酷的 SOLR 优化的情况下,这是我想要的。

干杯!

【问题讨论】:

标签: solr highlighting wildcard


【解决方案1】:

据我所知,您不能在 dismax 处理程序中使用通配符,请参阅 http://wiki.apache.org/solr/DisMaxRequestHandler#q

为了模拟通配符搜索,我按照此处的一些说明使用了 EdgeNGrams:http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/。其实我真的只是在 schema.xml 中添加了 edgytext 字段类型,并更改了我要搜索的字段的字段类型。

希望这会有所帮助!

【讨论】:

  • 很高兴能帮上忙!我自己也很沮丧:)
【解决方案2】:

或者您可以获取最新的夜间构建并使用 edismax (ExtendedDismaxQParser)。

它同时处理尾随和前导通配符。

【讨论】:

  • 太棒了,谢谢杰姆,我会检查一下。顺便问一下,你在 Solr 邮件列表论坛上吗?如果 Solr 可以让它们成为官方问答场所,那就太好了……那些邮件列表真的很不直观
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多