Solr / Lucene простой оператор "или" недоразумение / Поиск одного и того же слова в разных полях - PullRequest
1 голос
/ 24 мая 2019

Изучение синтаксиса Solr / Lucene с использованием Solr Admin в браузере. Там я пытаюсь найти одно и то же слово в двух разных полях со следующим синтаксисом:

content:myword -> найдено результатов

content:myword OR title:existingTitle -> найдено результатов

но

content:myword OR title:myword -> ZERO results found, почему? Это «или».

также пытался без оператора, который должен быть равен "или", также пытался "|" и "||"

это происходит, когда я пытаюсь найти одно и то же слово в одном из нескольких полей

[править]

Вот запросы URL solr:

содержание: fahrzeug название: fahrzeug http://xxx/solr/core_de/select?q=content%3Afahrzeug%20title%3Afahrzeug

содержание: fahrzeug ИЛИ название: fahrzeug http://xxx/solr/core_de/select?q=content%3Afahrzeug%20OR%20title%3Afahrzeug

содержание: fahrzeug | Название: Fahrzeug http://xxx/solr/core_de/select?q=content%3Afahrzeug%20%7C%20title%3Afahrzeug

{
  "responseHeader":{
    "status":400,
    "QTime":5,
    "params":{
      "q":"content:fahrzeug OR title:fahrzeug",
      "debugQuery":"1"}},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"invalid boolean value: 1",
    "code":400}}

1 Ответ

1 голос
/ 24 мая 2019

Я думаю, это настроено так:

Try: http://www119.pxia.de:8983/solr/core_de/select?fq=content%3Afahrzeug%20title%3Afahrzeug&q=*%3A* - возвращает правильные документы. Так что эти документы есть, если используется только фильтрация. Запросите более сложные условия, ваша конфигурация по умолчанию:

<requestHandler name="/select" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="defType">edismax</str>
        <str name="echoParams">explicit</str>
        <str name="qf">content^40.0 title^5.0 keywords^2.0 tagsH1^5.0 tagsH2H3^3.0 tagsH4H5H6^2.0 tagsInline^1.0</str>
        <str name="pf">content^2.0</str>
        <str name="df">content</str>
        <int name="ps">15</int>

        <str name="mm">2&lt;-35%</str>
        <str name="mm.autoRelax">true</str>
...

Парсер и бустинг могут сыграть здесь ключевую роль. Я не знаком с edixmax parser, пожалуйста, проверьте: документация Я предполагаю, что mm параметр может быть причиной этого. В любом случае странно, что OR не работает так, как мы привыкли к булевой алгебре.

"debug":{
"queryBoosting":{
  "q":"title:Home OR content:Perfekt",
  "match":null},
"rawquerystring":"title:Home OR content:Perfekt",
"querystring":"title:Home OR content:Perfekt",
"parsedquery":"+(title:hom content:perfekt)~2 ()",
"parsedquery_toString":"+((title:hom content:perfekt)~2) ()",
"explain":{
  "bf72a75534ba703e4b8dc7194f92ce34223fc0d2/pages/1/0/0/0":"\n4.8893824 = sum of:\n  4.8893824 = sum of:\n    1.9924302 = weight(title:hom in 0) [SchemaSimilarity], result of:\n      1.9924302 = score(doc=0,freq=1.0 = termFreq=1.0\n), product of:\n        1.9924302 = idf, computed as log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) from:\n          1.0 = docFreq\n          10.0 = docCount\n        1.0 = tfNorm, computed as (freq * (k1 + 1)) / (freq + k1) from:\n          1.0 = termFreq=1.0\n          1.2 = parameter k1\n          0.0 = parameter b (norms omitted for field)\n    2.8969522 = weight(content:perfekt in 0) [SchemaSimilarity], result of:\n      2.8969522 = score(doc=0,freq=5.0 = termFreq=5.0\n), product of:\n        1.4816046 = idf, computed as log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) from:\n          2.0 = docFreq\n          10.0 = docCount\n        1.9552802 = tfNorm, computed as (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)) from:\n          5.0 = termFreq=5.0\n          1.2 = parameter k1\n          0.75 = parameter b\n          508.3 = avgFieldLength\n          184.0 = fieldLength\n"},
"QParser":"ExtendedDismaxQParser",

Проверьте "parsedquery":"+(title:hom content:perfekt)~2 ()" В основном это говорит, что там должны быть и заголовок, и содержание: Операторы Solr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...