0

我在使用 SOLR 进行搜索时遇到问题。我的架构定义如下:

    <field name="_root_" type="string" indexed="true" stored="false"/>
    <field name="_text_" type="text_general" multiValued="true" indexed="true" stored="true"/>
    <field name="_version_" type="long" indexed="true" stored="true"/>
    <field name="deleted" type="booleans" indexed="true" stored="true"/>
    <field name="description" type="strings" indexed="true" stored="true"/>
    <field name="favorites_count" type="tlongs"/>
    <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
    <field name="image" type="strings"/>
    <field name="ingredients" type="strings" multiValued="true" indexed="true" stored="true"/>
    <field name="level" type="tlongs"/>
    <field name="portions" type="tlongs" indexed="true" required="true" stored="true"/>
    <field name="preparation" type="strings"/>
    <field name="rating" type="tdoubles"/>
    <field name="ratings_count" type="tlongs"/>
    <field name="subject" type="strings" indexed="true" required="true" stored="true"/>
    <field name="visible" type="booleans" indexed="true" stored="true"/>

问题是当我尝试在“成分”字段上执行搜索时。

主要查询:

q=(主题:“短语搜索输入”或描述:“短语搜索输入”)AND成分:(“一些成分短语”)

或成分:搜索词

没有成分参数的查询可以正常工作,并输出正确的结果。

但是,在过滤成分时,无论我使用 fq 还是直接在查询字符串中,我都会出错或根本没有结果。

成分字段的数据如下:

成分:[成分 1,成分 2,成分 3 短语]

另一个问题是当成分具有“(”或“)”字符并且我正在搜索这样的短语时 - 无法匹配。

SOLR 版本:5.3

有人可以帮助我吗?

谢谢!

4

1 回答 1

0

如果不查看数据并获取更多信息,很难确定确切的原因。但是,您可以按照以下步骤自行进一步解决问题。

  1. 使用 Solr Admin Analyzer 查看数据如何存储在成分字段中以及如何获取查询。
  2. 验证您是否将数据正确加载到成分字段中。确保您发送的每个值都实际存储为单独的令牌。
  3. 请记住,您没有标记该字段。这可能会影响搜索。
  4. 在查询中添加“debug=true”参数;您将了解 Solr 如何“看到”查询
于 2015-12-11T18:47:48.580 回答