0

我已经使用 DB 中的 requestHandler 将 80000 行随机文本上传到 Solr。

查看核心概述,我看到这些行已更新 在此处输入图像描述

在架构中,我定义了所有字符串列,如下例所示

...
<field name="packageName" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
...

我查询使用

http://localhost:8983/solr/vault/select/?q=everyone&fl=*

虽然我知道船长存在,但我没有得到任何结果(因为我查询

SELECT * FROM [dbo].[Fact] where packageNAme like '%everyone%'

) 事实上,只有以下查询

http://localhost:8983/solr/vault/select/?q=*&fl=id

返回行

为什么我不使用第一个查询获取行?
谢谢。

编辑
按照本教程,我正在使用这个查询

http://localhost:8983/solr/products/select?q=aluminum  
http://localhost:8983/solr/collection1/select/?indent=on&q=video&fl=name,id

它返回了所有答案。

4

1 回答 1

1

首先everyone是没有关键字Solr。根据您的查询everyone看起来像一个keyword.

其次 - 当您查询数据库时,您%在前面和后面都有匹配项。对于 Solr 查询,您必须执行相同的操作。

试试这个 - http://localhost:8983/solr/vault/select?q=packageName:*everyone*。这将为您提供与数据库相同的结果。

说明- 在我发送给您的查询中,您将尝试将字段packageNameeveryone之前和/或之后具有 0 个或多个字符的字段进行匹配。

有关更多信息,请查看此处

在问题中编辑后添加信息schema.xml- Solr 附带的默认值有一个名为的字段,该字段name被标记为default搜索字段,这意味着q=<search phrase>将与该name字段匹配。您正在查看的教程正在使用该name字段,因此他们得到了输出。

于 2013-06-16T12:13:24.083 回答