Почему эту фразу нельзя найти в моем Сфинксе? - PullRequest
4 голосов
/ 20 января 2020

Я установил python документацию генератора-sphinx и разместил в нем несколько статей, недавно я опубликовал статью с именем 股票筛选器.
Ввод 筛选 можно получить.

enter image description here

Введите полное название статьи 股票筛选器 в строке поиска, почему не можете ее получить сейчас?

enter image description here

Я собрал проект sphinx, сжал и загрузил его в Dropbox с помощью sample.7z, вы можете загрузить его и установить в свой sphinx, чтобы воспроизвести проблему.
пример проекта sphinx воспроизвести вопрос

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Это происходит потому, что 筛选 проиндексирован, а 股票筛选器 нет. Это происходит потому, что 股票筛选器 распознается как три разных термина / слова 股票, 筛选 и .

Индекс существует только для этих терминов (одиночные символы игнорируются): enter image description here

Так как отдельные символы игнорируются, только 股票 и 筛选 извлекают результаты.

РЕДАКТИРОВАТЬ

В _static\language_data.js добавьте следующий фрагмент кода в конец файла:

function getAllSubstrings(str) {
  var i, j, result = [];

  for (i = 0; i < str.length; i++) {
      for (j = i + 1; j < str.length + 1; j++) {
          result.push(str.slice(i, j));
      }
  }
  return result.sort(function(a, b){ return a.length - b.length;});
}

Должен выглядеть так: enter image description here

В _static\searchtools.js вставить ниже фрагмент кода выше этот прокомментированный код //console.debug('SEARCH: searching for:');:

if(searchterms.length==1)
        searchterms = getAllSubstrings(searchterms[0]);

должен выглядеть следующим образом: enter image description here

Опять в _static\searchtools.js в функции performTermsSearch (эта функция должна быть около / в строке 379)

  1. Внутри функции ищите этот комментарий // add support for partial matches.
  2. Ниже комментария вы найдете это if условие word.length > 2.
  3. Измените условие на word.length > 0

Должно выглядеть так: enter image description here

Прокрутите немного вниз. Вы найдете этот комментарий // no match but word was a required one.

Удалите условие if, которое находится непосредственно под ним.

enter image description here

Проверьте это, вероятно, должно работать:

enter image description here

2 голосов
/ 28 января 2020

Существует файл searchindex.js, созданный Sphinx.

Можете ли вы проверить этот файл и, для начала, убедиться, что в terms указано значение 股票筛选器, определенное?

Search.setIndex({
    docnames: ["docs/change-log/index", "docs/dependency-injection", "docs/examples/entity-framework"],
    envversion: {
        "sphinx.domains.c": 1,
        "sphinx.domains.changeset": 1,
        "sphinx.domains.citation": 1,
        sphinx: 56
    },
    filenames: ["docs\\change-log\\index.rst", "docs\\dependency-injection.rst", "docs\\examples\\entity-framework.rst"],
    objects: {},
    objnames: {},
    objtypes: {},
    terms: {
        _dbcontext: 19,
        _filepath: 19,
        _logger: [0, 7, 10, 11, 14, 27],
        _triggerinterv: 8,
        abov: [20, 24],
        kisslog: [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 18, 19, 21, 22, 23, 24, 25],
        kisslogapi: 15,
        zaeffer: 24,
        zero: 24
    },
    titles: ["Change log", "Dependency injection", "Entity Framework exceptions"],
    titleterms: {
        "break": 0,
        Use: 6,
        about: 27,
        ajax: 24,
        ani: 20,
        antlr: 24,
    }
})
...