solr查询与空白区域

时间:2011-04-26 12:19:14

标签: solr

我搜索一个单词,然后我用facet得到结果如下

<lst name="itemtype">
<int name="Internal">108</int>
<int name="Users">73</int>
<int name="Factory">18</int>
<int name="Supply Chain Intermediaries">6</int>
<int name="Company">1</int>
<int name="Monitor/Auditor firm">0</int>
</lst>

然后我写了像 fq = itemtype:Factory 这样的条件我得到了结果。但我没有得到 fq = itemtype:供应链中介 的结果。我正在考虑条件中的空间问题(供应链中介),我尝试使用urlencode(空格替换为%20)。但没用。你能帮我解决这个问题。

更新

对于单值,它工作正常。我像这样构建查询

http:localhost:8080/solr/select/?q=adidas&version=2.2&indent=on&facet=on&start=0&rows=20&fq={!raw f=itemtype}Supply Chain Intermediaries

但我需要写多个值。没有原始的原始查询如下

http://localhost/solr/select/?q=adidas&version=2.2&indent=on&facet=on&start=0&rows=20&fq=(itemtype:Company itemtype:Supply Chain Intermediaries)

请你帮我解决这个问题。

5 个答案:

答案 0 :(得分:34)

您的itemtype字段是如何分析的?

如果是string类型,请使用:

fq=itemtype:"Supply Chain Intermediaries"

否则你也可以尝试:

fq=itemtype:(Supply Chain Intermediaries)

假设OR是您配置中的默认运算符,text是默认搜索字段,您的查询将转换为:

fq=itemtype:Supply OR text:(Chain Intermediaries)

根据默认搜索字段搜索链和中介。

答案 1 :(得分:14)

我尝试过这里提到的不同解决方案,但都没有奏效。但是我解决了这个问题:

fq=itemtype: *Supply\ Chain\ Intermediaries*

此处空格将使用\

进行转义

上述字符串将与字符串Lorem Supply Chain Intermediaries Ipsum

匹配

如果您的单词以Supply Chain Intermediaries Ipsum开头 然后给出

fq=itemtype: Supply\ Chain\ Intermediaries*

答案 2 :(得分:2)

这不能直接回答这个问题,但它可能有助于解决这个问题:

在发布到Solr之前删除空格。

对于用于分面而不是搜索的字段,使用空格存储值并不重要。该值仅被视为关键。存储字段itemtype,如下所示:"supplychainintermediaries", "monitorauditorfirm"等。

当您向用户显示构面值时,只需使用将键值映射到显示值的字典。像这样:

"supplychainintermediaries" --> "Supply Chain Intermediaries" "monitorauditorfirm" --> "Monitor/Auditor Firm"

答案 3 :(得分:1)

我想你可以使用

fq={!raw f=itemtype}Supply Chain Intermediaries

为此目的

它确定你必须使用!term而不是!raw for Solr version&gt; = 4.0

http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201012.mbox/%3C4D121F73.3090706@jhu.edu%3E

度过愉快的一天。

答案 4 :(得分:0)

我通过替换:

修复了空白问题
$tmp[] = $name . ':' . $this->_escapeValue($value);

with:

$tmp[] = $name . ':' .'"'. $this->_escapeValue($value).'"';

通过在SolrSource.php文件中的转义值之后添加引号来表示。