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

问题描述:

我有一个非常具体的Lucene实现的要求,它存储多个带有反序列化JSON字符串的“属性”字段。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字符串中进行搜索,例如:

建设型BooleanQuery的其中至少一个“属性”字段必须匹配所有的值查询。 (例如,查询“+ user:tom + modifiedChars:3 + before:”text A“等)

我有一些想法,但我不知道从哪里开始。实现这样的实现。自定义分析可能与查询分析器使用? 认为这是一种开放式的问题。所有的建议都欢迎。

如果将总是搜索完整的一套价值观。

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

或者...为每组创建单独的文档。这将允许您搜索不同组合的值,而不会混淆不同的组。

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

您是否需要在查询中结合文本和属性? (“text:ipsum AND property:xxx”)

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

如果想法是为了获得“ID”字段进行搜索,那么上述的某些组合应该工作