Lucene-JSON对象的自定义分析器/解析器?

Lucene-JSON对象的自定义分析器/解析器?,lucene,lucene.net,Lucene,Lucene.net,我需要一个非常特定的Lucene实现,它使用反序列化的JSON字符串存储多个“属性”字段 例如: Document: ID: "99" Text: "Lorepsum Ipsum" Properties: "{ "lastModified": "1/2/2015", "user": "johndoe", "modifiedChars": 2, "before": "text a", "after": "text b", }" Properties:"{

我需要一个非常特定的Lucene实现,它使用反序列化的JSON字符串存储多个“属性”字段

例如:

Document:
ID: "99"
Text: "Lorepsum Ipsum"
Properties: "{
    "lastModified": "1/2/2015",
    "user": "johndoe",
    "modifiedChars": 2,
    "before": "text a",
    "after": "text b",
}"
Properties:"{
    "lastModified": "1/2/2013",
    "user": "johncotton",
    "modifiedChars": 6,
    "before": "text aa",
    "after": "text bbb",
}"
Properties: "{
    "lastModified": "1/3/2015",
    "user": "johnmajor",
    "modifiedChars": 3,
    "before": "text aa",
    "after": "text b",
}"
我知道ElasticSearch和Solr有在JSON对象中查找的实现,但我使用的是Lucene的核心API(3.0.5)

我的目标是使用lucene的API和一些附加的实现在JSON字符串中进行搜索,例如:

构建一种布尔查询类型,其中至少一个“属性”字段必须与查询中的所有值匹配。(例如,在“文本A”之前查询“+用户:tom+修改的chars:3+”等)

我有一些想法,但我不知道从哪里开始。我要问的是一些实现这种实现的高级想法。一个自定义分析器可能与查询解析器一起使用? 把它看作是一个开放的问题。所有的建议都是受欢迎的。

如果你总是搜索完整的值集…

为每个集合创建一个“属性”字段。该值将只是一组串联的值,即“1/2/2015:johndoe:2:text a:text b”

或者…为每个集合创建单独的文档。这将允许您搜索不同的值组合,而不会合并不同的集合

是的,这可能意味着复制文本字段。如果文本字段不大,那么我不会太在意(特别是如果您没有使用“存储”字段)

您需要在查询中组合文本和属性吗?(“文本:ipsum和属性:xxx”)

如果没有,则将文本放入另一个文档中

如果想法是为了获得“ID”字段而进行搜索,那么上面的一些组合应该会起作用