簡體   English   中英

使用 Solarium php 建議查詢中的 HTTP 錯誤問題

[英]HTTP error issue in suggest query using Solarium php

我正在使用日光浴室在 php codeigiter 中實施建議查詢。 但是在連接到createSuggester查詢時。 它顯示以下錯誤行。

An uncaught Exception was encountered
Type: Solarium\Exception\HttpException

Message: Solr HTTP error: OK (404)
HTTP ERROR 404
Problem accessing /solr/../suggest. Reason:

    Not Found
Filename: C:\wamp\www\solariumphp\vendor\solarium\solarium\src\Core\Query\Result\Result.php

Line Number: 59

Backtrace:

File: C:\wamp\www\solariumphp\vendor\solarium\solarium\src\Core\Client\Client.php
Line: 751
Function: __construct

File: C:\wamp\www\solariumphp\vendor\solarium\solarium\src\Core\Client\Client.php
Line: 783
Function: createResult

File: C:\wamp\www\solariumphp\vendor\solarium\solarium\src\Core\Client\Client.php
Line: 978
Function: execute

File: C:\wamp\www\solariumphp\application\controllers\Example.php
Line: 30
Function: suggester

File: C:\wamp\www\solariumphp\index.php
Line: 315
Function: require_once

我的示例代碼在這里,

$query = $this->client->createSuggester();
$query->setQuery('ap ip v'); //multiple terms
$query->setDictionary('suggester');
// $query->setOnlyMorePopular(true);
$query->setCount(10);
// $query->setCollate(true);

// this executes the query and returns the result
$resultset = $this->client->suggester($query);

echo '<b>Query:</b> '.$query->getQuery().'<hr/>';

// display results for each term
foreach ($resultset as $term => $termResult) {
    echo '<h3>' . $term . '</h3>';
    echo 'NumFound: '.$termResult->getNumFound().'<br/>';
    echo 'StartOffset: '.$termResult->getStartOffset().'<br/>';
    echo 'EndOffset: '.$termResult->getEndOffset().'<br/>';
    echo 'Suggestions:<br/>';
    foreach ($termResult as $result) {
        echo '- '.$result.'<br/>';
    }

    echo '<hr/>';
}

// display collation
echo 'Collation: '.$resultset->getCollation();

我試圖在許多資源中找到解決方案。 但解決方案不存在。 請解釋一下這個問題是什么/為什么會發生?

您可以像這樣在“solrconfig.xml”中設置默認字典:

<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
    <str name="name">mySuggester</str>
    <str name="lookupImpl">FreeTextLookupFactory</str>
    <str name="dictionaryImpl">DocumentDictionaryFactory</str>
    <str name="field">content</str>
    <str name="suggestFreeTextAnalyzerFieldType">suggestTypeLc</str>
    <str name="buildOnStartup">true</str>
    <str name="buildOnCommit">false</str>
</lst>
</searchComponent>

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
    <str name="suggest">true</str>
    <str name="suggest.count">10</str>
    <str name="suggest.dictionary">mySuggester</str>
</lst>
<arr name="components">
    <str>suggest</str>
</arr>
</requestHandler>

並從您的代碼中刪除這一行:

$query->setDictionary('suggester');

$query->setDictionary('suggester')不是'suggester' ',請使用像$query->setDictionary('mySuggester')這樣的建議者的名字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM