Lucene .Net. Какой хороший метод для создания индекса сложнее, чем ключ / значение? - PullRequest
0 голосов
/ 27 июля 2011

Я начинаю проект, в котором мы пытаемся проиндексировать содержимое XML-документов с помощью Lucene .Net.В небольшой документации, которую я нашел, кажется, что индексы могут состоять только из полей с одним строковым значением.Данные, которые я пытаюсь проиндексировать, немного сложнее, чем простые пары ключ-значение.

Вот пример XML-документа, из которого я хотел бы создать индекс:

    <descriptor>
  <asset guid="2AA7C8F9-2CB1-4A81-9421-C09F1D85939E" generated-date="2011-07-30" generated-by="hw/AutoMfg" generated-with="PMS">

    <!-- information about where the asset can be used -->
    <target>
      <localization>en-us</localization>
      <localization>es-us</localization>
      <environment>desktop</environment>
      <environment>mobile</environment>
    </target>

    <!-- all contents of an asset must have the same version -->
    <version-information>
      <version-number source="content">9.1.123.4</version-number>
      <version-number source="manufacturing">9.1.123.4</version-number>
      <release-label>9.1</release-label>
    </version-information>

    <!-- catalog information about the primary role of the asset -->
    <role>
      <namespace>parent.type.family.some.thing</namespace>
      <mime-type>text/html</mime-type>
      <hwid>abc1234</hwid>
    </role>

  </asset>
</descriptor>

Таким образом, я мог видеть поля создания, названные в честь дочерних элементов «дескриптора», но как насчетдочерние узлы там внутри?Как эти данные могут быть проиндексированы?Нужно ли создавать строку с разделителями для представления значений каждого поля?

например, поле: "Target" Значение: "localization: en-us; среда es-us: desktop; mobile | ...

Нужно ли выравнивать мои данные, как в моем примере выше, чтобы проиндексировать их?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 27 июля 2011

Довольно сложно дать конкретный совет - большая часть его зависит от того, что вы хотите получить и как, а не от формы данных. В любом случае, я бы начал с прекрасной маленькой серии Симоны Кьяретты на lucene.net ( 1 2 3 4 5 ). Одной из концепций, которая очень поможет, является тот факт, что вы можете индексировать одно и то же поле несколько раз для данного документа, так что вы, вероятно, сделаете что-то вроде:

Target-Localization:en-us
Target-Localization:es-us
Target-Environment:desktop
Target-Environment:mobile

Lucene принципиально плоский, но способен быть глубоким, оставаясь плоским новыми и интересными способами.

0 голосов
/ 28 июля 2011

Взгляните на Дайджест + Люцен . Порт .NET для Digester NDigester

...