【问题标题】:How to read from solr index?如何从 solr 索引中读取?
【发布时间】:2023-03-20 03:08:02
【问题描述】:

我根据本文档http://wiki.apache.org/solr/DIHQuickStart 将我的 db 表直接索引到 solr 中

完整的导入工作。但是,当我像这样查询数据时,我得到 没有结果

   $solr = new Apache_Solr_Service('localhost', '8983', 'solr/');

   $offset = 0;
   $limit = 1000;

   $queries = array(
      'details:Server'
   );

   $response = $solr->search( $query, $offset, $limit );

Solr 本身正在运行。我尝试查询“详细信息”行,但它现在给了我结果。

知道我做错了什么吗?

Schema.xml:http://pastebin.com/2kx7MkDX

data-config.xml:http://pastebin.com/vtDZzuqC

solrconfig.xml : http://pastebin.com/V6nzvMa5

全部来自 /example/solr/conf/

【问题讨论】:

    标签: php solr


    【解决方案1】:

    这是你的答案:

    您的“详细信息”字段定义为“字符串”。在 Solr 中,这意味着它被索引为单个文字标记。 'string' 类型通常用于标识符。

    因此,您的查询“details:Server”将匹配“details”完全等于“Server”且的文档“详细信息”包含“服务器”的文档。

    将您的“详细信息”字段更改为将您的文本索引为单独单词(标记)的内容:

    <field name="details" type="text" ...
    <!-- for instance -->
    

    然后重新索引所有内容。您可能还想查看您的其他字段定义。

    我鼓励您阅读 schema.xml 中的默认类型定义。

    【讨论】:

      【解决方案2】:

      应该

      $solr = new Apache_Solr_Service('localhost', '8983', 'solr/');
      

      成为

      $solr = new Apache_Solr_Service('localhost', '8983', '/solr');
      

      【讨论】:

      • hm 这对我没有帮助,solr 本身运行良好。我手动查看了索引,所有数据都在那里。查询仅返回 stdClass 对象 ( [numFound] => 0 [start] => 0 [docs] => Array ( ) )
      【解决方案3】:

      添加到 data-config.xml

      <dataConfig>
        <dataSource type="JdbcDataSource"
                   driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost/admin_pproject"
                   user="root"
                   password=""/>
        <document>
          <entity name="id"
                 query="select id, name,details, owner, subtype, edit, sub, type, provision, active from programme">
      
                 <!-- ADD-->         
                 <field column="id" name="id"/>
                 <field column="name" name="name" />
                 <field column="details" name="details" />
                 <field column="owner" name="owner" />
                 <field column="subtype" name="subtype" />
                 <field column="edit" name="edit" />
                 <field column="sub" name="sub" />
                 <field column="type" name="type" />
                 <field column="provision" name="provision" />
                 <field column="active" name="active" />
      
      
              </entity>
        </document>
      </dataConfig>
      

      测试

      【讨论】:

        【解决方案4】:

        我们可能需要查看您的 schema.xml。其中可能有错误。

        如果你用小写的“s”搜索“server”会发生什么?

        如果解决了问题,您有分析问题,请查看 schema.xml。

        您还可以查看架构浏览器(点击管理页面上的链接)。单击“详细信息”字段(左侧),查看 1000 或 10000 个术语,看看您是否看到“服务器”(或“服务器”)一词。您看到的内容会告诉您该词是否在索引中(至少,如果您在该字段中的唯一词少于 10,000 个)。

        【讨论】:

        • 感谢您的回答。但是,对于 server 和 Server 都没有搜索结果。但是服务器在索引中(现在我有 90 个术语)。我记得几天前在我开始直接索引数据库之前,它使用上面的代码对我有用,但现在它只是没有给我任何结果。我用源代码编辑了我的问题。请看一下。
        猜你喜欢
        • 2014-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        • 2023-03-26
        • 2021-05-30
        • 1970-01-01
        相关资源
        最近更新 更多