buda-base / public-digital-library

http://library.bdrc.io
5 stars 6 forks source link

Newlines in chunks.text_bo #925

Closed roopeux closed 2 months ago

roopeux commented 2 months ago

Etext search does not find phrases that span over two rows, even in the same chunk.

This should probably be handled in the tibetan-lenient analyzer.

@eroux ?

Working and non-working example queries attached འཆི་མེད་མགོན་པོའི་ལྷ་ཚོགས་ལ་འདོད-opensearch.json འཆི་མེད་མགོན་པོའི་ལྷ་ཚོགས་ལ་འདོད་གསོལ-opensearch.json

eroux commented 2 months ago

I don't think it's about new lines, if I search "མ་ཉེར་གཅིག་ལ་བསྟོད་པ་ཕན་བདེའི་" it finds a match across a line break, I'm not sure what's happening

roopeux commented 2 months ago

True. I'll try to find out the cause.

roopeux commented 2 months ago

The newline is between "'dod" and "gsol", and the search finds "'dod gsol"

When I add "la" to make it "la 'dod gsol", the search fails.

The text is https://library-dev.bdrc.io/show/bdr:IE0OPIC2BFA6FE?scope=bdr:IE0OPIC2BFA6FE&openEtext=bdr:VLIE0OPIC2BFA6FE_I1KG81113&startChar=131

eroux commented 2 months ago

I'll make this a priority, no worries

eroux commented 2 months ago

it seems to be an issue with the synonyms, see the following sequence of things:

DELETE /bdrc_test/
PUT /bdrc_test/
{
  "mappings": {
    "properties": {
      "bo_field-syn": { "type": "text", "analyzer": "tibetan-lenient-syn" , "index_options": "offsets" },
      "bo_field": { "type": "text", "analyzer": "tibetan-lenient" , "index_options": "offsets" }
    }
  },
  "settings": {
    "analysis": {
      "analyzer": {
        "tibetan-lenient-syn": {
          "tokenizer": "tibetan",
          "filter": [ "tibetan-lenient", "tibetan-synonyms" ],
          "char_filter": [ "tibetan-lenient" ]
        },
        "tibetan-lenient": {
          "tokenizer": "tibetan",
          "filter": [ "tibetan-lenient" ],
          "char_filter": [ "tibetan-lenient" ]
        }
      },
      "filter": {
        "tibetan-lenient": {
          "type": "tibetan",
          "remove_affixes": true,
          "normalize_paba": true
        },
        "tibetan-synonyms": {
          "type": "synonym_graph",
          "synonyms_path": "tibetan-synonyms.txt"
        }
      },
      "char_filter": {
        "tibetan-lenient": {
          "type": "tibetan",
          "lenient": true
        }
      }
    }
  }
}

POST /bdrc_test/_doc/1
{
  "bo_field": """བྱམས་པ་མགོན་པོ་ལ་བསྔགས་པ་དད་པའི་མེ་ཏོག །འཆི་མེད་མགོན་པོའི་ལྷ་ཚོགས་ལ་འདོད་
གསོལ་སྨོན་ཚིག །སྒྲོལ་དཀར་ཡིད་བཞིན་འཁོར་ལོ་ལ་བསྟོད་པ་ཚེ་དང་ཡེ་ཤེས་མཆོག་སྦྱིན། དཔལ་རྡོ་རྗེ་ཕྲེང་བའི་དཀྱིལ་འཁོར་གྱི་ལྷ་ཚོགས་རྣམས་ལ་བསྟོད་པ་རྒྱལ་བ་སྲས་བཅས་དགྱེས་པའི་མཆོད་སྤྲིན་

བཅས་ལ་ལྡེབ། ༢༩་༡
སྡེ་ཚན།༢ འཇམ་དཔལ་སྨྲ་བའི་སེང་གེ་ལ་བསྟོད་པ་ཨུཏྤལ་དམར་པོའི་དོ་ཤལ། འཇམ་དཔལ་གཞོན་ནུ་ལ་བསྟོད་པ་བློ་མཆོག་གུར་ཀུམ་གསར་པའི་ཕྲེང་མཛེས། འཇམ་དཔལ་སྨྲ་བའི་སེང་གེ་ལ་རྩ་
སྔགས་ཀྱི་སྒོ་ནས་བསྟོད་པ་མཚོ་བྱུང་བཞད་པའི་དབྱངས་སྙན། འཇམ་དཔལ་དཀར་པོ་ལ་བསྟོད་པ་བློ་གྲོས་སྣང་སྟེར། འཇམ་དཔལ་རྡོ་རྗེ་ལ་བསྟོད་སྨོན་བློ་གྲོས་དཔལ་སྦྱིན་ནོར་བུའི་འཁྲི་ཤིང་། འཇིག་རྟེན་
དབང་ཕྱུག་སྙིང་རྗེ་ཆེན་པོ་ལ་སྨྲེ་སྔགས་སུ་གསོལ་བའི་ཚིག་གི་ཨུཏྤལ་དྲང་སྲོང་གྲུབ་པའི་རྣ་རྒྱན། འཇིག་རྟེན་དབང་ཕྱུག་སྙིང་རྗེའི་བླ་མ་ལ་གསོལ་བའི་ཚིགས་སུ་བཅད་པ་བདུད་རྩིའི་པདྨོ། འཕགས་པ་སྤྱན་
རས་གཟིགས་དབང་ཕྱུག་ལ་བསྟོད་པ་གཞན་ཕན་ཀུནྡཱའི་ཕྲེང་བ། གསང་བའི་བདག་པོ་ལག་ན་རྡོ་རྗེ་ལ་བསྟོད་པ་གྲུབ་གཉིས་ཕན་བདེའི་དཔལ་སྟེར་ནོར་བུའི་ཕྲེང་བ། རྗེ་བཙུན་སྒྲོལ་མ་ཉེར་གཅིག་ལ་བསྟོད་
པ་ཕན་བདེའི་ཨུཏྤལ་གསར་པའི་དོ་ཤལ། རྗེ་བཙུན་སྒྲོལ་མ་ལ་བསྔགས་པ་འདོད་དོན་འགྲུབ་པའི་ཤིས་བརྗོད། འཕགས་མ་སྒྲོལ་མ་ལ་རྩ་སྔགས་དང་སྦྱར་བའི་སྒོ་ནས་གསོལ་བ་འདེབས་པ་དོན་ཀུན་གྲུབ་

༄༅། །པའི་དབྱངས་སྙན། འཕགས་མ་སྒྲོལ་མ་ཡིད་བཞིན་འཁོར་ལོ་ལ་ཕྱག་འཚལ་བའི་ཚིགས་སུ་བཅད་པ་དོན་ཀུན་གྲུབ་པ་བིཝའི་ལྗོན་བཟང་། རྗེ་བཙུན་རིགས་བྱེད་མ་ལ་བསྟོད་པ་ཡིད་འཕྲོག་རྫོགས་
ལྡན་གཞོན་ནུའི་ཆར་སྤྲིན། རྗེ་བཙུན་རིགས་བྱེད་ཌ་ཀི་ལ་བསྟོད་པ་ཡིད་འཕྲོག་མཚམས་སྤྲིན་གཞོན་ནུའི་ཕྲེང་བ། ཀུ་ར་ཀུལླེ་དཀར་མོ་ལ་བསྟོད་པ་བློ་གྲོས་ཀུནྡའི་དོ་ཤལ། བཅོམ་ལྡན་འདས་མ་ཀུ་རུ་ཀུལླེ་
བསྟོད་པ་དབང་མཛད་དཔལ་མོ་དགྱེས་པའི་མཆོད་སྤྲིན། བཅོམ་ལྡན་འདས་འཇམ་པའི་རྡོ་རྗེའི་སྒོ་ནས་ཤིས་པར་བརྗོད་པའི་ཚིགས་སུ་བཅད་པ་མེ་ཏོག་གཞོན་ནུའི་དོ་ཤལ། འཕགས་མ་རྡོ་རྗེ་དབྱངས་ཅན་
མ་ལ་བསྟོད་པ། ཡང་ཚིགས་བཅད་བློ་ཀ་གཅིག །སྒྲ་དབྱངས་ལྷ་མོ་དབྱངས་ཅན་མ་དམར་མོ་ལ་བསྟོད་ཅིང་གསོལ་བ་འདེབས་པ་བློ་གྲོས་མཆོག་སྩོལ། བཅོམ་ལྡན་འདས་རྟ་མཆོག་རོལ་པ་ལ་བསྟོད་པ་གྲུབ་
གཉིས་རོལ་མོ། """,
  "bo_field-syn": """བྱམས་པ་མགོན་པོ་ལ་བསྔགས་པ་དད་པའི་མེ་ཏོག །འཆི་མེད་མགོན་པོའི་ལྷ་ཚོགས་ལ་འདོད་
གསོལ་སྨོན་ཚིག །སྒྲོལ་དཀར་ཡིད་བཞིན་འཁོར་ལོ་ལ་བསྟོད་པ་ཚེ་དང་ཡེ་ཤེས་མཆོག་སྦྱིན། དཔལ་རྡོ་རྗེ་ཕྲེང་བའི་དཀྱིལ་འཁོར་གྱི་ལྷ་ཚོགས་རྣམས་ལ་བསྟོད་པ་རྒྱལ་བ་སྲས་བཅས་དགྱེས་པའི་མཆོད་སྤྲིན་

བཅས་ལ་ལྡེབ། ༢༩་༡
སྡེ་ཚན།༢ འཇམ་དཔལ་སྨྲ་བའི་སེང་གེ་ལ་བསྟོད་པ་ཨུཏྤལ་དམར་པོའི་དོ་ཤལ། འཇམ་དཔལ་གཞོན་ནུ་ལ་བསྟོད་པ་བློ་མཆོག་གུར་ཀུམ་གསར་པའི་ཕྲེང་མཛེས། འཇམ་དཔལ་སྨྲ་བའི་སེང་གེ་ལ་རྩ་
སྔགས་ཀྱི་སྒོ་ནས་བསྟོད་པ་མཚོ་བྱུང་བཞད་པའི་དབྱངས་སྙན། འཇམ་དཔལ་དཀར་པོ་ལ་བསྟོད་པ་བློ་གྲོས་སྣང་སྟེར། འཇམ་དཔལ་རྡོ་རྗེ་ལ་བསྟོད་སྨོན་བློ་གྲོས་དཔལ་སྦྱིན་ནོར་བུའི་འཁྲི་ཤིང་། འཇིག་རྟེན་
དབང་ཕྱུག་སྙིང་རྗེ་ཆེན་པོ་ལ་སྨྲེ་སྔགས་སུ་གསོལ་བའི་ཚིག་གི་ཨུཏྤལ་དྲང་སྲོང་གྲུབ་པའི་རྣ་རྒྱན། འཇིག་རྟེན་དབང་ཕྱུག་སྙིང་རྗེའི་བླ་མ་ལ་གསོལ་བའི་ཚིགས་སུ་བཅད་པ་བདུད་རྩིའི་པདྨོ། འཕགས་པ་སྤྱན་
རས་གཟིགས་དབང་ཕྱུག་ལ་བསྟོད་པ་གཞན་ཕན་ཀུནྡཱའི་ཕྲེང་བ། གསང་བའི་བདག་པོ་ལག་ན་རྡོ་རྗེ་ལ་བསྟོད་པ་གྲུབ་གཉིས་ཕན་བདེའི་དཔལ་སྟེར་ནོར་བུའི་ཕྲེང་བ། རྗེ་བཙུན་སྒྲོལ་མ་ཉེར་གཅིག་ལ་བསྟོད་
པ་ཕན་བདེའི་ཨུཏྤལ་གསར་པའི་དོ་ཤལ། རྗེ་བཙུན་སྒྲོལ་མ་ལ་བསྔགས་པ་འདོད་དོན་འགྲུབ་པའི་ཤིས་བརྗོད། འཕགས་མ་སྒྲོལ་མ་ལ་རྩ་སྔགས་དང་སྦྱར་བའི་སྒོ་ནས་གསོལ་བ་འདེབས་པ་དོན་ཀུན་གྲུབ་

༄༅། །པའི་དབྱངས་སྙན། འཕགས་མ་སྒྲོལ་མ་ཡིད་བཞིན་འཁོར་ལོ་ལ་ཕྱག་འཚལ་བའི་ཚིགས་སུ་བཅད་པ་དོན་ཀུན་གྲུབ་པ་བིཝའི་ལྗོན་བཟང་། རྗེ་བཙུན་རིགས་བྱེད་མ་ལ་བསྟོད་པ་ཡིད་འཕྲོག་རྫོགས་
ལྡན་གཞོན་ནུའི་ཆར་སྤྲིན། རྗེ་བཙུན་རིགས་བྱེད་ཌ་ཀི་ལ་བསྟོད་པ་ཡིད་འཕྲོག་མཚམས་སྤྲིན་གཞོན་ནུའི་ཕྲེང་བ། ཀུ་ར་ཀུལླེ་དཀར་མོ་ལ་བསྟོད་པ་བློ་གྲོས་ཀུནྡའི་དོ་ཤལ། བཅོམ་ལྡན་འདས་མ་ཀུ་རུ་ཀུལླེ་
བསྟོད་པ་དབང་མཛད་དཔལ་མོ་དགྱེས་པའི་མཆོད་སྤྲིན། བཅོམ་ལྡན་འདས་འཇམ་པའི་རྡོ་རྗེའི་སྒོ་ནས་ཤིས་པར་བརྗོད་པའི་ཚིགས་སུ་བཅད་པ་མེ་ཏོག་གཞོན་ནུའི་དོ་ཤལ། འཕགས་མ་རྡོ་རྗེ་དབྱངས་ཅན་
མ་ལ་བསྟོད་པ། ཡང་ཚིགས་བཅད་བློ་ཀ་གཅིག །སྒྲ་དབྱངས་ལྷ་མོ་དབྱངས་ཅན་མ་དམར་མོ་ལ་བསྟོད་ཅིང་གསོལ་བ་འདེབས་པ་བློ་གྲོས་མཆོག་སྩོལ། བཅོམ་ལྡན་འདས་རྟ་མཆོག་རོལ་པ་ལ་བསྟོད་པ་གྲུབ་
གཉིས་རོལ་མོ། """
}

GET /bdrc_test/_search
{
  "query": {
    "match_phrase": {
      "bo_field": "འཆི་མེད་མགོན་པོའི་ལྷ་ཚོགས་ལ་འདོད་"
    }
  }
}

GET /bdrc_test/_search
{
  "query": {
    "match_phrase": {
      "bo_field": "འཆི་མེད་མགོན་པོའི་ལྷ་ཚོགས་ལ་འདོད་གསོལ"
    }
  }
}

GET /bdrc_test/_search
{
  "query": {
    "match_phrase": {
      "bo_field-syn": "འཆི་མེད་མགོན་པོའི་ལྷ་ཚོགས་ལ་འདོད་གསོལ"
    }
  }
}
roopeux commented 2 months ago

I get zero hits with all the three queries.

eroux commented 2 months ago

the query now works!

eroux commented 2 months ago

fix was https://github.com/buda-base/lucene-bo/commit/6580f7aa840ec6476a44ea804f3a4f163ccc8e5a